首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有方法从库中识别有关内存分配的详细信息?

是否有方法从库中识别有关内存分配的详细信息?
EN

Stack Overflow用户
提问于 2015-01-28 15:58:56
回答 1查看 69关注 0票数 0

我的进程被链接到多个库,导致内存泄漏。内存泄漏来自其中一个库。我正在试图了解是否有一种方法来识别从驻留在这些库中的函数中分配的内存。每个库所使用的大小?

内存分配器是否遵循任何特定的方式,同时根据调用malloc的位置进行分配。比如,如果从Lib A调用它,那么分配将从0xA开始,对于lib B,0xB等等。

基本上,我想看看是否有办法识别泄漏的库和泄漏的内存,并将其转储。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-28 16:09:00

如果没有外部工具的帮助,这会有点困难。您必须意识到,没有什么比“量规”更能告诉您的进程实际使用了多少内存,以及哪个库函数分配了该内存。这主要与两件事有关:

  1. 你的操作系统,也就是把内存交给你的进程,并不关心或者不知道哪个库要求内存--把一个新页面映射到你的进程的内存中就像任何其他的系统调用一样。
  2. 通常,libc是向程序/库/程序员提供像malloc()free()这样的功能的。这些函数封装了操作系统的内存分配/取消分配(实际上,映射和取消映射)功能;这允许您以不按页面大小的倍数(通常为4kB)的单位分配和释放内存。然而,这也意味着您不能真正依赖您的操作系统来告诉您,您的进程实际使用了多少内存,有多少内存已被正确清理,以及有多少内存正在泄漏。

因此,您需要一些机制来处理libc和操作系统,这样您就可以检查进程在内部做什么了。一个典型的工具是瓦兰。它并不太复杂,所以我鼓励你试一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28196760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档