我在代码中遇到内存泄漏问题,当它运行时,堆继续增加到最大值,我需要重新启动服务,我运行top命令,看到堆正在增加,只要我在服务中调用一个场景.
我用valgrind运行服务,
valgrind --log-file=log-feb19.txt --leak-check=full --show-reachable=yes --track-origins=yes myservice
Run Code Online (Sandbox Code Playgroud)
当我运行场景时,我没有看到任何明显丢失或可能丢失的块,但我看到很多条件跳转或移动取决于未初始化的值(s)错误.
这些是否会导致内存泄漏?
我得到的例子:
==27278== Conditional jump or move depends on uninitialised value(s)
==27278== at 0xC90D91E: xcsFreeMemFn (in /apps/opt/mqm/lib64/libmqmcs_r.so)
Run Code Online (Sandbox Code Playgroud)
........
==27278== Uninitialised value was created by a heap allocation
==27278== at 0x4A078B8: malloc (vg_replace_malloc.c:270)
==27278== by 0xC90E32F: xcsGetMemFn (in /apps/opt/mqm/lib64/libmqmcs_r.so)
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗
seh*_*ehe 15
不,这意味着您正在访问尚未初始化的内存:
int main()
{
int unitialized;
std::cout << unitialized << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
会触发这个错误.
稍微更常见的是:
struct X
{
X() : i(42) { }
private:
int i;
int* forgotten; // oops, not initialized
};
Run Code Online (Sandbox Code Playgroud)
最后,当您不使用memset清除整个缓冲区时,基于malloc的代码经常发生这种情况.所以,
| 归档时间: |
|
| 查看次数: |
33505 次 |
| 最近记录: |