3

http://goog-perftools.sourceforge.net/doc/tcmalloc.html 声明:“CMalloc 当前不向系统返回任何内存。” 我认为这意味着如果我分配 42 MB 并释放它,系统将不会取回它,但下次我分配 47 MB​​ 时它只会多偷 5 MB?我的问题是加载的 dll 或 .so 模块会发生什么。他们是否获得了自己的内存块,直到程序退出才释放。我问是因为如果我想编写运行时可更新的软件,我必须在不退出程序的情况下加载新的 dll。所以我的问题是:如果我使用 -ltcmalloc 并且我不断加载和卸载分配和释放内存的 dll 会导致内存使用量激增吗?我认为这是一个愚蠢的问题,但我不知道每个 dll 是否使用自己的内存分配内容,或者内存分配是否在每个进程级别。

4

1 回答 1

3

内存属于一个进程,而不是 DLL。因此,内存通常会保留到进程结束。这是大多数 malloc 实现的共同特征,而不仅仅是您要询问的那个。

于 2011-05-12T10:02:02.437 回答