相关疑难解决方法(0)

在64位土地上堆积碎片

在过去,当我处理长时间运行的C++守护进程时,我不得不处理堆碎片问题.保持我的大量分配池的技巧是必要的,以防止耗尽连续的堆空间.

这仍然是64位地址空间的问题吗?Perf对我来说不是一个问题,所以我宁愿简化我的代码而不再处理像缓冲池这样的事情.有没有人有关于这个问题的经验或故事?我正在使用Linux,但我想很多相同的问题都适用于Windows.

c++ 64-bit heap-fragmentation

14
推荐指数
2
解决办法
2818
查看次数

C++ 程序因 std::bad_alloc 而终止,但 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)

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

谢谢,

c++ memory valgrind

5
推荐指数
1
解决办法
2049
查看次数

标签 统计

c++ ×2

64-bit ×1

heap-fragmentation ×1

memory ×1

valgrind ×1