我该如何做这种工作?如何从C中的“原始”内存读取/写入类型值?
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
我该如何做这种工作?如何从C中的“原始”内存读取/写入类型值?
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
简单的例子:把内存为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
您可以使用整数太大,但你一定要注意你在一次设置的字节数量。
因此,通过“工作”我假设你的意思是“我怎么提领/上void*
执行指针运算”?你不能;如果你只关心阅读大量的内存,你必须将它施放到char*
。当然,如果是这种情况,只需将其声明为char*
即可。
我对读/写任何类型的东西感兴趣,不仅仅是字符。 – dtech 2012-07-15 10:01:19
@ddriver:没有改变。你必须投射指针。当类型未知时,你会如何期待解引用和/或算术的行为?这个不成立。您需要传递额外信息以了解底层类型。 – 2012-07-15 18:12:20
规则很简单:
由此可以得出结论,如果要执行“原始”
是否有可能通过投射void指针而不是创建“中间”类型指针来实现此目的? – dtech 2012-07-15 10:07:26
当然,为清晰起见,我使用中间表示法 – ziu 2012-07-15 10:08:34