gpt4 book ai didi

c++ - 从指针读取 cubin 结构

转载 作者:行者123 更新时间:2023-11-28 08:16:43 25 4
gpt4 key购买 nike

我正在尝试读取具有以下格式的 C++ 结构(在 Windows 中)的内容

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?

以上与所有非指针和指针成员一致。我做错了什么?

已添加:

好的,让我详细说明一下这个问题。是的,“key”指向的地址是 NULL,所有指针成员也是如此。但我确定该结构具有有效数据。驱动程序函数使用它来生成句柄并且执行良好。我只需要复制结构的整个图像并将其存储在文本文件中。我该怎么做?为什么有些成员字段为空?我正在考虑一种蛮力方法来查找结构的地址限制。但是这些值本身在阅读时似乎是无效的,我不知道该怎么做!

添加 2

Memory Dump结构

谢谢!

最佳答案

cout << ptr->key无论键指向什么,都将打印为以 0 结尾的字符串,不是指针本身。如果键是 NULL或其他无效则这将是未定义的行为。 (在这种情况下是“崩溃”)

如果您只想打印指针本身,请确保将其打印为 void*指针:

cout << static_cast<void*>(ptr->key);

关于c++ - 从指针读取 cubin 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7475479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com