C++ 程序因 std::bad_alloc 而终止,但 valgrind 报告没有内存泄漏

Gab*_*el 5 c++ memory valgrind

我的程序失败并显示“std::bad_alloc”错误消息。该程序是可扩展的,因此我使用 valgrind 在较小的版本上进行了测试,并且没有内存泄漏。

这是统计力学的应用,所以我基本上制作了数百个对象,更改它们的内部数据(在本例中为双精度的 stl 向量),并写入数据文件。对象的创建位于循环内,因此当循环结束时,内存将被释放。就像是:

for (cont=0;cont<MAX;cont++){
         classSection seccion;
         seccion.GenerateObjects(...);
         while(somecondition){
                seccion.evolve();
                seccion.writedatatofile();
         }}
Run Code Online (Sandbox Code Playgroud)

因此有两个变量决定程序的计算时间、系统的大小和运行次数。只有运行多次的大型系统才会崩溃。关于如何解决这个内存问题有什么想法吗?

谢谢,

sha*_*oth 4

在调试器下运行程序,以便一旦引发异常,程序就会停止,并且您可以观察调用堆栈。

三个最可能出现的问题是:

  • 请注意,“对不合理的大内存块的请求”也可能是对负大小内存块的请求,负数隐式转换为“size_t”(这是一种无符号类型)。 (3认同)