C++内存释放的问题

FactorGraph*factor_graph;factor_graph=newFactorGraph();SetupFactorGraphs(factor_graph... FactorGraph* factor_graph;
factor_graph= new FactorGraph();
SetupFactorGraphs(factor_graph,i+1);
delete factor_graph;
在delete这个地方总是报错
for (int i = 0; i < 2000; i ++)
{
FactorGraph* factor_graph;
factor_graph= new FactorGraph();
SetupFactorGraphs(factor_graph,i+1);
if (!factor_graph)
delete factor_graph;
}
FactorGraph是我定义了一个类,然后,但运行到i=170的时候,报Microsoft C++ exception: std::bad_alloc at memory location 0x0012f5fc..
但实际上我的电脑内存有8G,是足够的,能解答一下吗
展开
 我来答
一巴手9
2012-11-02
知道答主
回答量:6
采纳率:0%
帮助的人:2.3万
展开全部
可能是在 SetupFactorGraphs 这个函数中,你对factor_graph操作时,出现了内存泄漏,建议仔细检查一下函数的内部逻辑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草根英雄1
2012-11-02 · TA获得超过409个赞
知道小有建树答主
回答量:379
采纳率:0%
帮助的人:231万
展开全部
LZ不会提问 啊·FactorGraph是个黑盒,别人是无法知道你是在那进行错误操作了的,两个办法。1,放出源代码,2,抽象描述你的实现。这样别人才能大概知道你错在哪了
追问
for (int i = 0; i < 2000; i ++)
{
FactorGraph* factor_graph;
factor_graph= new FactorGraph();
SetupFactorGraphs(factor_graph,i+1);
if (!factor_graph)
delete factor_graph;
}
FactorGraph是我定义了一个类,然后,但运行到i=170的时候,报Microsoft C++ exception: std::bad_alloc at memory location 0x0012f5fc..
但实际上我的电脑内存有8G,是足够的,能解答一下吗
追答
if (!factor_graph)//这里,由于逻辑判断错误,事实上你申请的内存都没有释放
//仔细分析下语义 如果 factor_graph为空,执行下面的释放语句
//至于下面的,我想你的
//SetupFactorGraphs(factor_graph,i+1);或者构造函数有问题
delete factor_graph;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
forever2z312
2012-11-02 · TA获得超过417个赞
知道小有建树答主
回答量:385
采纳率:0%
帮助的人:177万
展开全部
应该是你 函数的问题咯。你把那个函数调用 代码 注掉试试看还有没有错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yajiedesign
2012-11-04 · TA获得超过286个赞
知道小有建树答主
回答量:479
采纳率:0%
帮助的人:306万
展开全部
8G内存不代表你能用8G啊
要64位编译才行的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b86d4c9
2012-11-02
知道答主
回答量:34
采纳率:0%
帮助的人:11.5万
展开全部
看不出哪里错了,显示什么错误?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式