当我访问微控制器中的内存值时,为什么它指向我的数据值的末尾?

inn*_*yme 1 c memory microcontroller memory-leaks stm32

我试图在我的微控制器中的内存地址处获取 的值。地址是 at 0x1fff7000,那是内存块的开始(所以之前的任何东西都是未定义的)。在我的代码中,我有char *ptr = (char *)BASE_ADDR;where #define BASE_ADDR ((uint32_t)0x1FFF7000)。我的价值0x1FFF70000x12345678,我 100% 知道它在那里。

在 GDB 中,我正在做(gdb) p/x *ptr,我的返回值是$6 = 0x78. 为什么它在0x78而不返回0x12345678甚至不返回0x12

Bor*_*itz 6

因为您有一个小端系统/mcu,这意味着首先存储最低有效字节。在您的示例中0x12345678,存储为 32 位整数的 将看起来像78 56 34 12内存中的原始数据。