[英]C++ : List Seg Fault
谁能解释我为什么会这样?
当我在if-else块内调用成员函数printEvent()时,我得到正确的输出,但是当我在该块后调用printEvent()时,我得到了未知的结果。
list<Event*> currentEvents;
for (j=1; j <= eventsNum; ++j)
{
Event * newEvent;
if (isIndividual(inFile)) {
IndividualEvent newIndi = returnIndi(inFile);
newEvent = &(newIndi);
newEvent->printEvent();
}else {
TeamEvent newTeam = returnTeam(inFile);
newEvent = &(newTeam);
newEvent->printEvent();
}
cout << "WHY?" << endl;
newEvent->printEvent();
currentEvents.push_back(newEvent);
}
TVNode.push_back(newEmission);
}
输出值
<Filiko1>
WHY HERE?
<Filiko1q<15-06-2015,14:00<Athens<0`W ����Athensq<Football<1<0>!0����Footballq<2q<Olympiakos<PSG!
����OlympiakosxW^��DW����PSG^��DWPW�^��DWi�n
上面的代码是一个大练习的一部分!
if或else块之后的newEvent
指向已破坏的对象,因为对象的生存期受其定义范围的限制。 在您的情况下,如果if-else语句之后,对象newIndi
和newTeam
将被销毁,而newEvent
指针仍指向它们之一。
请参阅此链接以了解C ++范围: http : //en.cppreference.com/w/cpp/language/scope
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.