如何知道是什么分配了给定的内存块
How to know what allocated a given chunk of memory?
我想知道,在给定任何内存块的情况下,比如类的实例或std::vector
,我可以推断出哪个函数(可能来自*alloc函数族)分配了给定的内存块,或者更好的是,哪个调用new
或allocator
(如果使用的话)在我的应用程序中创建了可寻址空间。
C/C++内存分配器不跟踪这段数据,它只跟踪每个分配区域的大小。没有办法找出是谁分配的。
如果你想要一个更有建设性的答案,你需要告诉我们你正在努力实现什么。如果目标是调试代码,那么应该使用第三方内存调试器——valgrind可能是目前可用的最好的调试器。
有一些评测工具,例如strace,它向您显示被调用的函数。
相关文章:
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 在C++中释放内存期间,迭代器与指针有何不同
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- delete如何知道对象在内存中的起始位置
- 需要知道如何从本机 HAL 将地图存储在 android 持久内存中
- 无论代码长度如何,以下代码的内存要求有何不同?
- 为什么在编译时需要知道对象的内存配置文件以进行堆栈放置?
- C++ 友元函数在内存位置上有何不同?
- 我不知道为什么会发生堆损坏(关于内存分配问题)
- 如何知道memcpy()函数在完成餐具期间已成功复制了内存
- 我怎么知道基类对象的指针数组中元素的类型,它将为派生类分配内存
- 当我们不知道类型的大小时,如何为它分配内存?
- 我怎么知道内存中的变量是否是指针
- Linux如何知道过程使用了多少物理内存
- 对象指针如何知道要删除多少内存
- 我不知道我在哪里泄漏了内存C++
- 如何知道两个C字符串是否指向一个内存块
- 如何知道应用程序中可用的虚拟内存
- Windows 如何知道我没有使用内存?
- "acquire" 和"consume"内存顺序有何不同,何时"consume"可取?