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 に答える