Я пытаюсь прочитать содержимое структуры c ++ (в окнах), которая имеет следующий формат
typedef struct __cudaFatCudaBinaryRec {
unsigned long magic;
unsigned long version;
unsigned long gpuInfoVersion;
char* key;
char* ident;
char* usageMode;
__cudaFatPtxEntry *ptx;
__cudaFatCubinEntry *cubin;
__cudaFatDebugEntry *debug;
void* debugInfo;
unsigned int flags;
__cudaFatSymbol *exported;
__cudaFatSymbol *imported;
struct __cudaFatCudaBinaryRec *dependends;
unsigned int characteristic;
__cudaFatElfEntry *elf;
} __cudaFatCudaBinary;
У меня есть указатель на эту структуру (void * ptr)
Теперь я хочу прочитать содержимое этой структуры.
__cudaFatCudaBinary *ptr2=(cudaFatCudaBinary*)ptr;
cout<<ptr->magic;//This works fine
cout<<ptr->key;//This crashes my program..bad pointer results..why?
Вышеуказанное согласуется со всеми не указателями и членами-указателями. Что я делаю не так?
ДОБАВЛЕНО:
Хорошо, позвольте мне подробнее остановиться на этой проблеме. Да, адрес, на который указывает «ключ», равен NULL, поэтому он относится ко всем элементам указателя. Но я точно знаю, что структура имеет действительные данные. Он используется функцией драйвера для генерации дескриптора и работает нормально. Все, что мне нужно, это скопировать все изображение структуры и сохранить его в текстовом файле. Как бы я это сделал? Почему некоторые поля-члены не имеют значения? Я думаю о грубой силе, чтобы найти адресные пределы структуры. Но сами значения кажутся недействительными при чтении, и я не знаю, как это сделать!
ДОБАВЛЕНО 2
Дамп памяти структуры
Спасибо!