我的课程中有一个功能,如:
centrala* siec_telek::wylosuj_centrale()
{
int wylosowana = dowolna_liczba_do(ilosc_central);
centrala wylosowana_centrala = lista_central[wylosowana];
centrala* wsk = &wylosowana_centrala;
cout <<wsk->przepustowosc_central[0]<<endl<<wsk<<endl;
return wsk;
}
cout给了我很好的结果但是当我打电话给其他功能时:
centrala* wylosowana_centrala = wylosuj_centrale();
cout << wylosowana_centrala->przepustowosc_central[0]<<endl<<wylosowana_centrala<<endl;
przepustowosc_central [0]给出另一个结果,但指针没问题(例如0x28f9cc两次)
答案 0 :(得分:0)
这是因为您要分配本地值地址(wylosowana_centrala
)来返回值。
由于wylosowana_centrala
存储在堆栈上,退出函数后可能会被覆盖。
作为修复,您可以尝试更改
centrala* wsk = &wylosowana_centrala;
为:
centrala* wsk = &lista_central[wylosowana];