C++程序,内存占用一直增加,最后无法分配内存而中断 10
栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。...
栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
我的问题代码如下:
for (int j = 0; j < n; j++)
{
getForPart(TH,j,thrsdata, thrsGood,src1, src2,dst, ofs_d);
}
上面说函数内的变量存储在栈上,函数结束,储单元会自动被释放。可是我在执行上面的循环时,通过断点设置发现, getForPart()函数每执行一次,占用内存就会增加30M。而我的理解是函数执行后,内存会被系统自动释放,内存应该不会变化这么大。
是不是函数分配的内存太大,没有分配到栈上,然后内存就不会被自动释放。电脑内存有限,现在不知道如何解决这一问题,求赐教。
注:编译器是VS2013,函数处理的是图像,使用了OpenCV2.4.8,图像在处理之后也手动释放了内存。 展开
我的问题代码如下:
for (int j = 0; j < n; j++)
{
getForPart(TH,j,thrsdata, thrsGood,src1, src2,dst, ofs_d);
}
上面说函数内的变量存储在栈上,函数结束,储单元会自动被释放。可是我在执行上面的循环时,通过断点设置发现, getForPart()函数每执行一次,占用内存就会增加30M。而我的理解是函数执行后,内存会被系统自动释放,内存应该不会变化这么大。
是不是函数分配的内存太大,没有分配到栈上,然后内存就不会被自动释放。电脑内存有限,现在不知道如何解决这一问题,求赐教。
注:编译器是VS2013,函数处理的是图像,使用了OpenCV2.4.8,图像在处理之后也手动释放了内存。 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询