More on C++ stack arrays

Namespace rswhite4 at googlemail.com
Wed Oct 23 07:41:09 PDT 2013


On Wednesday, 23 October 2013 at 14:35:12 UTC, dennis luehring 
wrote:
> Am 23.10.2013 15:59, schrieb Namespace:
>> On Sunday, 20 October 2013 at 16:33:35 UTC, Walter Bright 
>> wrote:
>>> On 10/20/2013 7:25 AM, bearophile wrote:
>>>> More discussions about variable-sized stack-allocated arrays
>>>> in C++, it seems
>>>> there is no yet a consensus:
>>>>
>>>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3810.pdf
>>>>
>>>> I'd like variable-sized stack-allocated arrays in D.
>>>
>>> They're far more trouble than they're worth.
>>>
>>> Just use:
>>>
>>>    auto a = new T[n];
>>>
>>> Stack allocated arrays are far more trouble than they're 
>>> worth.
>>> But what about efficiency? Here's what I often do something
>>> along the lines of:
>>>
>>>    T[10] tmp;
>>>    T[] a;
>>>    if (n <= 10)
>>> 	a = tmp[0..n];
>>>    else
>>> 	a = new T[n];
>>>    scope (exit) if (a != tmp) delete a;
>>>
>>> The size of the static array is selected so the dynamic
>>> allocation is almost never necessary.
>>
>> Another idea would be to use something like this:
>> http://dpaste.dzfl.pl/8613c9be
>> It has a syntax similar to T[n] and is likely more efficient
>> because the memory is freed when it is no longer needed. :)
>>
>
> but it would be still nice to change the 4096 size by template 
> parameter maybe defaulted to 4096 :)

That is true. ;) And can be easily done. :)


More information about the Digitalmars-d mailing list