Get size of mem to free by free
H.Loom via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Aug 5 13:43:12 PDT 2016
On Friday, 5 August 2016 at 19:55:22 UTC, Mark "J" Twain wrote:
> I use malloc to allocate some memory, then free it later. For
> monitoring purposes, I would like to know how much is free'ed
> by free by just knowing the object. Or, rather, given a ptr
> allocated by malloc, bet the block size it allocated from the
> ptr alone.
>
> Some C compilers have special intrinsics and such for this,
> does D have any ability? If not, any hacks? I just need
> something that works.
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.
More information about the Digitalmars-d-learn
mailing list