Variable-length stack allocated arrays

grauzone none at example.net
Tue Jan 12 00:50:39 PST 2010


Andrei Alexandrescu wrote:
> grauzone wrote:
>> Andrei Alexandrescu wrote:
>>> grauzone wrote:
>>>> Andrei Alexandrescu wrote:
>>>>> 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.
>>>>
>>>> That isn't the case right now and never will be.
>>>
>>> Then if I were you and I really believed that, I wouldn't waste one 
>>> more minute hanging out in this group.
>>
>> Don't worry, I won't leave so easily.
> 
> I know. Clearly there is something in D that you find irresistibly 
> attractive; I wonder what that is :o).

It's like a narcotic drug.

>> That said, if you use "delete" (or GC.free) incorrectly, you may end 
>> up with an undebuggable program. Plus there's no way manual free will 
>> ever be removed from D. I'm sure you know that, but it sounds like 
>> you're denying that. Whatever.
> 
> Of course I'm denying it because it's false. SafeD will not allow 
> programs containing manual free. And SafeD is quickly becoming a 
> reality, your pessimism notwithstanding.

Does this imply you'Re going to make SafeD default, and discourage use 
of "unsafe" D?

> 
> Andrei



More information about the Digitalmars-d mailing list