我試圖用雙向鏈表來存儲數據。 所以我做了一段時間的聲明,將每個節點都傳遞給存檔。「訪問衝突讀取位置0xcdcdcdfd」序列化時
if (ar.IsStoring())
{
while (Actual)
{
ar << Actual->name;
ar << Actual->adresse;
ar << Actual->email;
ar << Actual->fax;
ar << Actual->firma;
ar << Actual->geburtsdatum;
ar << Actual->geschlecht;
ar << Actual->land;
ar << Actual->ort;
ar << Actual->plz;
ar << Actual->telefon;
ar << Actual->vorname;
Actual = Actual->next;
}
}
This works。我的問題是加載變量。它是1:1相同。 (而不是< <來>>)。
我alwany得到一個錯誤「訪問衝突讀取位置0xcdcdcdfd」。 我真的不知道爲什麼。 在功能的頂部有Actual = Actual->next;
錯誤。
如果你需要它,這是我的全序列化功能:
void CDatenbankDoc::Serialize(CArchive& ar)
{
Actual = Start;
Actual = Actual->next;
if (ar.IsStoring())
{
while (Actual)
{
ar << Actual->name;
ar << Actual->adresse;
ar << Actual->email;
ar << Actual->fax;
ar << Actual->firma;
ar << Actual->geburtsdatum;
ar << Actual->geschlecht;
ar << Actual->land;
ar << Actual->ort;
ar << Actual->plz;
ar << Actual->telefon;
ar << Actual->vorname;
Actual = Actual->next;
}
}
else
{
while (Actual)
{
ar >> Actual->name;
ar >> Actual->adresse;
ar >> Actual->email;
ar >> Actual->fax;
ar >> Actual->firma;
ar >> Actual->geburtsdatum;
ar >> Actual->geschlecht;
ar >> Actual->land;
ar >> Actual->ort;
ar >> Actual->plz;
ar >> Actual->telefon;
ar >> Actual->vorname;
Actual = Actual->next;
}
}
}
希望你能幫助我解決這個問題。 感謝
串行數據時,永遠不要存儲指針。在反序列化它們時指針不會有意義。另外,千萬不要讓指針未初始化。您需要爲您的「Actual」的c'tor提供代碼。實質上,你甚至不應該在C++中使用指針。 – IInspectable
0xcdcdcdcd是一個神奇的價值,當你得到錯誤的代碼時,它的目的是讓程序崩潰。它告訴你,你正在使用一個已經被刪除的對象。所以Actual-> next是垃圾,而不是創建你反序列化的對象,在代碼中也是一個非常明顯的缺陷。 –