c - 是否可以在不搜索 malloc 语句的情况下找到分配给指针的内存

标签 c gdb

假设我已经为函数 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/

上一篇:c - 遍历 Lua 表

下一篇:C 逗号运算符

相关文章:

C 从文本文件创建数组

c - makefile循环依赖和覆盖命令

c - "Variable to be used not initialized"警告

c++ - GDB strace 显示它尝试在无效地址进行 ptrace

带有 Jazzy UI 的 C# 应用程序

debugging - gdb 忽略 Qemu 引导加载程序中的断点

c++ - 如何在 gdb 中列出类方法?

c - gdb:在特定库中设置断点

debugging - macOS Mojave : How to achieve codesign to enable debugging (gdb)?

c - 在c中打开文件并打印到文件