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,图像在处理之后也手动释放了内存。
展开
 我来答
寻森良Z
2015-03-24 · TA获得超过368个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:130万
展开全部
getForPart执行时,内部调用了【动态分配内存】的函数,比如malloc,new等,会从“堆”里分配30M空间,这部分空间不会随函数结束而回收,需要自行回收。
抽风派掌门人2
2015-03-23
知道答主
回答量:25
采纳率:0%
帮助的人:11.4万
展开全部
那你就直接分配在堆里面试试呗
追问
由于图像的创建和管理是借助OpenCV库实现的,自己分配处理起来不方便,处理不好还会出现其它内存问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式