View source code
							
							
						
								Display the source code in std/experimental/allocator/package.d from which this
								page was generated on github.
							
						
							Report a bug
							
						
								If you spot a problem with this page, click here to create a
								Bugzilla issue.
							
						
							
								Improve this page
							
							
					
								Quickly fork, edit online, and submit a pull request for this page.
								Requires a signed-in GitHub account. This works well for small changes.
								If you'd like to make larger changes you may want to consider using
								local clone.
							
						Function std.experimental.allocator.disposeMultidimensionalArray
Destroys and then deallocates a multidimensional array, assuming it was created with makeMultidimensionalArray and the same allocator was used.
						
				void disposeMultidimensionalArray(T, Allocator)
				(
				
				  auto ref Allocator alloc,
				
				  auto ref T[] array
				
				);
						
					
				Parameters
| Name | Description | 
|---|---|
| T | element type of an element of the multidimensional array | 
| alloc | the allocator used for getting memory | 
| array | the multidimensional array that is to be deallocated | 
Example
struct TestAllocator
{
    import std .experimental .allocator .common : platformAlignment;
    import std .experimental .allocator .mallocator : Mallocator;
    alias allocator = Mallocator .instance;
    private static struct ByteRange
    {
        void* ptr;
        size_t length;
    }
    private ByteRange[] _allocations;
    enum uint alignment = platformAlignment;
    void[] allocate(size_t numBytes)
    {
         auto ret = allocator .allocate(numBytes);
         _allocations ~= ByteRange(ret .ptr, ret .length);
         return ret;
    }
    bool deallocate(void[] bytes)
    {
        import std .algorithm .mutation : remove;
        import std .algorithm .searching : canFind;
        bool pred(ByteRange other)
        { return other .ptr == bytes .ptr && other .length == bytes .length; }
        assert(_allocations .canFind!pred);
         _allocations = _allocations .remove!pred;
         return allocator .deallocate(bytes);
    }
    ~this()
    {
        assert(!_allocations .length);
    }
}
TestAllocator allocator;
auto mArray = allocator .makeMultidimensionalArray!int(2, 3, 5, 6, 7, 2);
allocator .disposeMultidimensionalArray(mArray);
Authors
License
					Copyright © 1999-2024 by the D Language Foundation | Page generated by ddox.