On Friday, 5 August 2016 at 20:43:12 UTC, H.Loom wrote:
On Friday, 5 August 2016 at 19:55:22 UTC, Mark "J" Twain wrote:
[...]

You can wrap the C memory allocations functions with a version identifier, e.g


version(stat)
{
    __gshared size_t[size_t] sizes;
}

version(stat)
{
    auto malloc(size_t size)
    {
        auto result = std.c.stdlib.malloc;
        sizes[result] = size;
        return result;
    }
}
else alias malloc = std.c.stdlib.malloc;

version(stat)
{
    void free(void* ptr)
    {
        std.c.stdlib.free(ptr);
        sizes.remove(ptr);
    }
}
else alias free = std.c.stdlib.free;


that a bit a DIY but this would work.

Yeah, I ended up just storing the sizes in the ptr on malloc. Essentially the same but I don't have to keep a global around and deal with that.

Reply via email to