返回值后更改

时间:2014-06-10 13:07:29

标签: c++

我的课程中有一个功能,如:

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两次)

1 个答案:

答案 0 :(得分:0)

这是因为您要分配本地值地址(wylosowana_centrala)来返回值。 由于wylosowana_centrala存储在堆栈上,退出函数后可能会被覆盖。

作为修复,您可以尝试更改

centrala* wsk = &wylosowana_centrala;

为:

centrala* wsk = &lista_central[wylosowana];