我如何制作这样的作品?
void *memory = malloc(1000); //allocate a pool of memory
*(memory+10) = 1; //set an integer value at byte 10
int i = *(memory+10); //read an integer value from the 10th byte
答案 0 :(得分:6)
简单示例:将内存视为unsigned char数组
void *memory = malloc(1000); //allocate a pool of memory
uint8_t *ptr = memory+10;
*ptr = 1 //set an integer value at byte 10
uint8_t i = *ptr; //read an integer value from the 10th byte
您也可以使用整数,但是您必须注意一次设置的字节数。
答案 1 :(得分:4)
规则很简单:
由此可以得出结论,如果你想执行“原始”指针算法,你必须转换为char *。
答案 2 :(得分:3)
所以,通过“工作”我假设你的意思是“如何在void*
上取消引用/执行指针算术”?你不能;如果你只是关心阅读大块内存,你必须将其强制转换为char*
。当然,如果是这种情况,只需将其声明为char*
即可。