0
我在通過引用給定方法傳遞數據時遇到問題 - 當方法訪問數據時,數據已損壞,但我確信當方法被調用時它不是(通過調試)。下面是類似的代碼:將數據傳遞給方法時內存損壞
//Calling code
const void* tempPointer = array.mid(readerPos,RE8K_ICDEF_HARMONICS_SIZE).constData();
const re8k_ics_harmonics* const newStruct = static_cast< const re8k_ics_harmonics* >(tempPointer);
DSInstance().updateHarmonics(*newStruct);
//method
void DataStream::updateHarmonics(const re8k_ics_harmonics &infoHarmonics, ...)
{
//Use infoHarmonics
}
所以,如果我使用調試器,去把一個斷點在「調用代碼」中的最後一行,看什麼是newStruct,我看到的數據是它應該是完美的。比方法被調用,我把一個新的斷點(或去「下一行」),直到輸入第一行updateHarmonics裏面,當我看到infoHarmonics的內容時,我看到部分數據已損壞,部分它在那裏。
爲什麼代碼被破壞?我該怎麼辦? :X
附加信息:
- 陣列是Qt的QByteArray中
- readerPos的是,從點數據遍歷所述的QByteArray應讀
- constData()一個int返回一個const char *
感謝,
Momergil
謝謝,解決了我所有的問題:)(不能相信我錯過了,但!) – Momergil