On Thursday, 5 November 2015 at 01:42:18 UTC, Adam D. Ruppe wrote:
The object itself needs to know it because the object may pass out references to itself.

Consider something like this:

class MyString {
   private char[128] data_;
   private int length_;

   char[] getData() { return this.data_[0 .. length_]; }
}

How you allocate that isn't terribly important. You might malloc it, you might gc it, you might stick it on the stack. (This is all possible, even easy, with D today btw.)

But, when should it be freed?

char[] getString() {
   MyString s = make!myString;
   return s.getData();
// does s get freed here? what about the returned member though?
}

How can class coder possibly know what's happening outside of his implementation or how can compiler understand a reference to a class member is being returned ? Doesn't this require full control flow analysis ?

Enlighten me please...

Reply via email to