0

我正在编写我的程序,我需要从 c-string 中获取一个指针。例如,我有一个像“0x3b021e01”这样的字符串,作为输出,我想要一个合法的指针 void *ptr == 0x3021e101。

我尝试了这种方法:

char *addr = "0x3021e101"; // this address is just an example of 32-bit addr

uint32_t iaddr = from_ch_to_hex(addr); // iaddr == 0x3021e101

void *data_buf = (void *)iaddr; // data_buf = 0x3021e101

uint32_t reg_val = *(uint32_t *)data_buf;

但我得到分段错误。这里有什么问题?我该如何解决?

4

1 回答 1

1

0x3b021e101 是一个奇数,因此您可能会遇到对齐错误。

顺便说一句,除非您通过其他方式知道该地址是有效的,例如通过指向该地址的指针,否则您为什么不直接使用该指针呢?

于 2013-11-09T19:53:42.797 回答