Я пишу проект в Objective-C, но в значительной степени полагаюсь на старый добрый C, поскольку в нем задействован OpenGL.
У меня есть блок данных, который я считываю в память из файла следующим образом:
NSString *path = [[NSBundle mainBundle] pathForResource:@"iPadTest" ofType:@""];
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];
data = [file readDataToEndOfFile];
currentImage = [ReadDataFiles getOrganizedImageData:data];
Последняя функция дает мне структуру, в которой данные немного более доступны, но все еще есть три больших объекта данных изображений.Это начинается так:
ImageData *organizedImageData = malloc(sizeof(ImageData));
// IMAGE DIMENSIONS
UInt64 *rawData = (UInt64 *) data.bytes;
organizedImageData->imageDimensions.x = *rawData;
rawData++;
organizedImageData->imageDimensions.y = *rawData;
rawData++;
organizedImageData->imageDimensions.z = *rawData;
// IMAGE 1
rawData++;
organizedImageData->image1Data = (UInt8*)rawData;
// IMAGE 2
rawData++;
organizedImageData->image2Data = (UInt8*)rawData;
// etc...
Проблема в том, что когда данные достигают функций OpenGL, что-то еще записывается в ту же память.Результат каждый раз разный, но данные никогда не бывают постоянными.
Когда я говорю отладчику сделать паузу, когда эти адреса меняются, я в конечном итоге получаю код сборки, из которого я ничего не могу сделать.
Как и где я должен распределить пространство памяти, чтобы остальная часть программы не дурачилась с ним?