www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - What does program do when array is returned from function?

reply "tcak" <tcak gmail.com> writes:
[code]
char[] test(){
    auto t = new char[5];

    return t;
}
[/code]

Is the test function returning just a pointer from heap or does 
copy operation?

It is not obvious what it does, and I am trying to avoid doing 
this always.
Jun 04 2015
parent reply Daniel =?UTF-8?B?S296w6Fr?= via Digitalmars-d-learn writes:
On Thu, 04 Jun 2015 07:03:30 +0000
tcak via Digitalmars-d-learn <digitalmars-d-learn puremagic.com> wrote:

 [code]
 char[] test(){
     auto t = new char[5];
 
     return t;
 }
 [/code]
 
 Is the test function returning just a pointer from heap or does 
 copy operation?
 
this is same as: auto t = new char[](5) it will return array(which is struct with pointer to data and size)
 It is not obvious what it does, and I am trying to avoid doing 
 this always.
there is no reason. But be carefull, this could be wrong [code] char[] test(){ char[5] t; return t; } [/code]
Jun 04 2015
parent reply "Marc =?UTF-8?B?U2Now7x0eiI=?= <schuetzm gmx.net> writes:
On Thursday, 4 June 2015 at 07:20:24 UTC, Daniel Kozák wrote:
 On Thu, 04 Jun 2015 07:03:30 +0000
 tcak via Digitalmars-d-learn 
 <digitalmars-d-learn puremagic.com> wrote:

 [code]
 char[] test(){
     auto t = new char[5];
 
     return t;
 }
 [/code]
 
 Is the test function returning just a pointer from heap or 
 does copy operation?
 
this is same as: auto t = new char[](5) it will return array(which is struct with pointer to data and size)
 It is not obvious what it does, and I am trying to avoid doing 
 this always.
there is no reason. But be carefull, this could be wrong [code] char[] test(){ char[5] t; return t; } [/code]
Fortunately this doesn't even compile with current DMD.
Jun 04 2015
parent "tcak" <tcak gmail.com> writes:
On Thursday, 4 June 2015 at 09:42:04 UTC, Marc Schütz wrote:
 On Thursday, 4 June 2015 at 07:20:24 UTC, Daniel Kozák wrote:
 On Thu, 04 Jun 2015 07:03:30 +0000
 tcak via Digitalmars-d-learn 
 <digitalmars-d-learn puremagic.com> wrote:

 [code]
 char[] test(){
    auto t = new char[5];
 
    return t;
 }
 [/code]
 
 Is the test function returning just a pointer from heap or 
 does copy operation?
 
this is same as: auto t = new char[](5) it will return array(which is struct with pointer to data and size)
 It is not obvious what it does, and I am trying to avoid 
 doing this always.
there is no reason. But be carefull, this could be wrong [code] char[] test(){ char[5] t; return t; } [/code]
Fortunately this doesn't even compile with current DMD.
Yes. Trying to return a variable from stack doesn't sound like a good idea other than copying its value somewhere else.
Jun 04 2015