Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re^3: Avoiding memory loss...

by LanX (Bishop)
on Dec 27, 2012 at 23:11 UTC ( #1010591=note: print w/replies, xml ) Need Help??

in reply to Re^2: Avoiding memory loss...
in thread Avoiding memory loss...

> Regarding the allocation, in this case, we're talking pointer to an array.

yes, reference to an array (pointers are in C memory addresses but references are more complicated).

But it doesn't matter @array and $array_ref=\@array are just two different ways to represent the same array.

> Normally, I wouldn't create an empty array, but was pretty sure that I had to have the reference in place before the push, yes?

As I told you: No!

You are pushing to a variable starting with @. If the array doesn't exist already it will be allocated. If it exists but it's incompatible to push (like a hash) you,'ll get an error.

DB<107> ref $a => "" DB<108> push @$a,1..3 => 3 DB<109> ref $a => "ARRAY" DB<110> $b={} => {} DB<111> push @$b,1..3 Not an ARRAY reference at (eval 44)[] line 2. DB<112> ref $b => "HASH"
In newer versions of Perl you are even allowed to push directly to $array_refs.

Cheers Rolf

Replies are listed 'Best First'.
Re^4: Avoiding memory loss...
by J.Perl.Man (Novice) on Dec 27, 2012 at 23:18 UTC

    Greatly appreciated, cleaned up the code!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010591]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (8)
As of 2018-03-22 13:03 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (274 votes). Check out past polls.