我有兴趣访问我分配的内存部分以更好地理解事物,假设我使用 malloc
和 printf("%p", &foo) 分配了 10 个字节
返回 0xff0a
,我是否能够分配 0xff0a->0xff1a
(目前我的十六进制数学很糟糕)并访问其中任何一个字节?
我想我记得使用过关键字 volatile
以及为此使用的内存地址,但我不确定该代码能够做什么..
我想我的意思是如何访问内存中的随机字节,转换为 char 或整数,我可以将其存储在指针中以供稍后访问。
最佳答案
我假设您想要访问多字节类型(例如 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;
}
输出
$ ./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
注意它向后看的原因是 x86 是小端
关于C: 在特定内存位置访问 'char'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4300591/