C:在特定的内存位置访问“ char”?

Joh*_*ohn 2 c memory memory-management

我有兴趣访问为更好地理解事物而分配的内存部分,可以说我分配了10个字节mallocprintf("%p", &foo)返回0xff0a,我是否可以分配0xff0a->0xff1a(我的十六进制数学现在不好)并可以访问以下任何一个那些字节?

我想我记得在此同时使用了关键字volatile和内存地址,但是我不确定该代码能做什么。

我想我的意思是我如何访问内存中的随机字节,将其转换为char或整数,可以存储在指针中以供以后访问。

Sie*_*geX 5

我假设您要从多字节类型(例如int或short)访问单个字节。常见的习惯用法是将地址强制转换为char *并遵循如下方式:

#include <stdio.h>

int main(void)
{
    int foo = 0xDEADBEEF;
    int i;

    for (i = 0; i < 4; i++) {
        printf("byte %d of foo is x%02X\n", i, *((unsigned char*)&foo + i));
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出量

$ ./a.out
byte 0 of foo is xEF
byte 1 of foo is xBE
byte 2 of foo is xAD
byte 3 of foo is xDE
Run Code Online (Sandbox Code Playgroud)

注意它向后看的原因是由于x86是小端