c ++程序使用太多内存

时间:2014-05-30 04:14:10

标签: c++ memory memory-management

我有一个进行模拟的c ++程序。模拟很大。它需要运行几次。

我可能没有考虑一些内存管理指南,例如通过引用函数传递参数以避免相同数据的副本浪费内存,以及其他我甚至不知道的技术。但重新整理整个程序为时已晚(或者甚至可能无法帮助)。

我有一个程序

void main(){

//Simulation consuming a lot of memory.

};

我想要像

这样的东西
void main(){
   for (int i=0;i<10000;i++){   
     //Simulation consuming a lot of memory (depending on i).
   };
};

但是以这种方式在 for 的每个循环之后释放内部使用的内存(可能除了用于程序和for的计数器i之外)。

对于循环的一次重复,内存保持良好,但对于两次循环没有。

我有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

UNIX / Linux 上,您可以创建一个bash shell脚本来调用您的C ++程序所需的次数,例如run_my_app.sh,其中包含以下内容:

i=0
while (( $i < 10000 )); do
    ./my_app $i
    let i+=1
done

然后使用chmod +x run_my_app.sh使其可执行。


Windows 上,对cmd.exe“shell”执行相同的操作,使用以下内容创建run_my_app.bat

for /l %i in (0,1,9999) do my_app %i

如果需要,您可以添加my_app的完整路径,例如:c:\dir1\dir2\my_app而不是my_app。您无需执行任何操作即可使其成为可执行文件 - 这是.bat扩展名所暗示的。


然后按如下方式修改 C ++程序

#include <cstdlib>

int main(int argc, const char* argv[])
{
    if (argc != 2)
    {
         std::cerr << "usage: " << argv[0] << " i\n"
              "run the simulation iteration number <i>.\n";
         exit(EXIT_FAILURE);
    }

    int i = std::atoi(argv[1]);

    ...simulation...
}