0
주어진 메서드에 대한 참조로 데이터를 전달하는 데 문제가 있습니다. 메서드가 데이터에 액세스 할 때 데이터가 손상 될 수 있지만 메서드가 호출 될 때 (디버그에 의해)). 그래서 디버거를 사용하고 마지막 줄에 "전화 코드"에 중단 점을 넣어 가서 newStruct에, 나는 데이터가 볼 무엇을 보면,데이터를 메서드에 전달할 때 메모리 손상
//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
}
다음은 코드 같은입니다 그것이 있어야대로 완벽. 메서드가 호출되고 내부의 첫 번째 줄을 입력 할 때까지 새로운 중단 점 (또는 "다음 줄"로 이동)을 넣습니다. infoHarmonics의 내용을 볼 때 데이터의 일부와 부분이 손상된 것으로 나타납니다. 저기있어.
왜 코드가 손상 되었습니까? 어떻게해야합니까? : X
추가 정보 :
- 배열
- readerPos는 점 데이터로부터 QByteArray을 반복은
- constData()을 읽어해야 INT 인 Qt의 QByteArray이다가 CONST 문자를 반환 *
감사합니다,
Momergil
임시 데이터에 대한 포인터를 복용 라인const void* tempPointer = array.mid(readerPos,
RE8K_ICDEF_HARMONICS_SIZE).constData();
에 있도록
감사합니다. 내 모든 문제를 해결했습니다. :) (내가 그 것을 놓쳤다 고 믿을 수는 없습니다!) – Momergil