@safe containers with std.experimental.allocator

Eugene Wissner via Digitalmars-d digitalmars-d at puremagic.com
Fri Jan 20 22:06:10 PST 2017


On Saturday, 21 January 2017 at 05:52:49 UTC, bitwise wrote:
> I hadn't noticed this, but I immediately see two problems:
>
> 1) there is no alignedDeallocate() which is needed because 
> aligned allocators usually prepend metadata containing a 
> pointer to the actual start of the memory to be passed to 
> free(). So deallocate() can't know if the memory came from 
> allocate() or alignedAllocate(), and hence does not now how to 
> properly free the memory.
>
> 2) The whole point of using an allocator is that is allocates 
> memory in a different way, but provides a standard interface. 
> It shouldn't be up to a container to know whether to call 
> allocate() or alignedAllocate(). A container should simply call 
> allocate() of whatever allocator it was given.

yes, agreed. alignedAllocate() seems then to make the interface 
complexer without reason.


More information about the Digitalmars-d mailing list