void Simulator::writeData()
{
resultFile_<<"#"<<*gTime_<<"\n";
Wire* wire=wires_->next;
char* c=0;
while(wire!=0)
{
if(wire->getType() ==TYPE_OUT)
{
c=wire->getValue();
resultFile_<<"b"<<c<<" "<<wire->getName()<<"\n"; //output result
//// for vector of results://///
Tlogic tempEntery(wire->getSize());
tempEntery.setTime(*gTime_);
tempEntery.setLogic(c);
goldenResult_.push_back(tempEntery);
////////////////////////////////
}
wire=wire->next;
}
} //end of function writeData
在这段代码中,我需要一个临时聊天*变量,我把它命名为C, 我分配内存给它的,然后删除, 问题: 我的程序调用这个函数正确它的工作原理, ,但第十次,我称之为,程序中断,当我暂停它出现此错误: 该进程似乎是死锁。的进程似乎陷入僵局
这是错误: 该进程似乎死锁(或没有运行任何用户模式代码)。所有线程都已停止。 +确定按钮!
.................. 我认为它是因为我的vector(goldenResult_)!!因为当我评论该行没有死锁 我该如何解决这个错误?
你有内存泄漏 - 使用delete []来取消分配ARRAY类型的内存 – mathematician1975 2012-07-28 09:14:41
请你指定它是如何崩溃的?我们是在永恒中循环吗?如果是这样,链表的线可能是圆形的,我们永远不会退出循环。 – 2012-07-28 09:15:15
还有另外一个问题 - 你在初始化时调用c变量的delete。由于它是一个局部变量,它将包含一些随机数据。当你调用delete的时候,内存管理器可能会默默地吞噬它,并在稍后崩溃,或者立即执行。 – 2012-07-28 09:17:26