如何从c-string中提取地址

时间:2013-11-09 19:50:10

标签: c pointers char memory-address gdbserver

我正在编写程序,我需要从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;

但我得到了分段错误。这有什么不对?我该如何解决?

1 个答案:

答案 0 :(得分:1)

0x3b021e101是一个奇数,所以你会期望对齐错误。

顺便说一句,除非您通过其他方式知道地址有效, 通过指向该地址的指示,为什么不用它 指针?