http://goog-perftools.sourceforge.net/doc/tcmalloc.html 它声明:“CMalloc目前不会向系统返回任何内存。” 我认为这意味着,如果我分配42 MB并释放它系统不会让它回来,但下次我分配47 MB它将只窃取5 MB?我的问题是加载的dll或.so模块会发生什么。他们是否得到自己的内存块,直到程序退出才会释放。我问,因为如果我想写运行时更新sw我必须加载新的dll而不退出程序。所以我的问题是:如果我使用-ltcmalloc并且我不断加载和卸载分配和释放内存的dll会导致内存使用爆炸吗?我认为这是一个愚蠢的问题,但我不知道每个dll是否使用自己的内存分配内容,或者是否每个进程级别都有内存分配。
答案 0 :(得分:3)
内存属于进程,而不属于DLL。因此通常会保留内存,直到进程结束。这是大多数malloc实现的一个共同特征,而不仅仅是您要问的那个。