假设我已经为函数 foo
中的某个指针分配了内存:
void foo()
{
// ...
int *ptr = malloc(20*sizeof(int));
bar (ptr);
}
从 foo()
,我将这个指针传递给 bar()
,假设从 bar()
传递给另一个函数。
现在,在某个时间点,我想检查:为指针分配了多少内存。
有没有可能的方法,不用搜索语句:
int *ptr = malloc(20*sizeof(int));
使用 GDB 计算分配给指针的内存量?
谢谢。
最佳答案
答案是:它取决于。
许多系统提供msize()
[1]、malloc_usable_size()
[2] 或类似函数。如果您在这样的系统上,(gdb) print malloc_usable_size(ptr)
就是您所需要的。
[1] http://msdn.microsoft.com/en-us/library/z2s077bc(v=vs.80).aspx
[2] http://www.slac.stanford.edu/comp/unix/package/rtems/doc/html/libc/libc.info.malloc.html
关于c - 是否可以在不搜索 malloc 语句的情况下找到分配给指针的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5813078/