Variable-length stack allocated arrays

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Jan 11 23:46:59 PST 2010


grauzone wrote:
> Andrei Alexandrescu wrote:
>> The idea is that the API offers a means to define and use temporary 
>> buffers without compromising memory safety. Even if you escape data 
>> allocated via getBuffer that persists after releaseBuffer, that will 
>> not cause undefined behavior. (It may, however, cause data to be 
>> overwritten because another call to getBuffer will reuse memory.) 
>> Leaks are also possible if you don't release the buffer. That can be 
>> solved by not offering getBuffer and releaseBuffer as they are, but 
>> instead only encapsulated in a struct with the appropriate constructor 
>> and destructor.
> 
> That's an interesting point. You can have two things:
> 1. Correct memory managment (one can never access an object that's 
> supposed to be free'd)
> 2. Safe memory managment (event if you access an object that's supposed 
> to be free'd, it's memory safe)
> 
> In safe mode, 1. can't be allowed, and 2. is better than nothing. In 
> normal D, I'd say 2. is quite useless, except as an debugging option.

Normal D must be debuggable D.

Andrei



More information about the Digitalmars-d mailing list