c ++中的内存泄漏

Aja*_*jay 6 c++ memory-leaks memory-management

我在intel Xscale设备上运行我的c ++应用程序.问题是,当我用Valgrind运行我的应用程序offtarget(Ubuntu)时,它没有显示任何内存泄漏.

但是当我在目标系统上运行它时,它以50K可用内存开始,并在一夜之间减少到2K.如何捕捉这种泄漏,这是Valgrind没有显示出来的?

MSa*_*ers 10

这些小型嵌入式设备的常见罪魁祸首是内存碎片.您的应用程序可能在两个对象之间有可用内存.对此最常见的解决方案是为最常见的类使用专用分配器(C++中的operator new).纯粹用于大小为N的对象的内存池不会碎片 - 两个对象之间的空间总是N的倍数.


180*_*ION 4

这可能不是真正的内存泄漏,但可能是内存使用量增加的情况。例如,它可以分配一个不断增加的字符串:

string s;
for (i=0; i<n; i++)
  s += "a";
Run Code Online (Sandbox Code Playgroud)

50k 并不算多,也许您应该手动查看源代码,看看可能导致问题的原因。