在下面的循环中,我试图复制存储在voidPtr地址的数据。这里的数据已知是长度计数的整数数组。我已经读过将这个数组转换为int然后执行副本(如下所示)应该可以工作。
int intArr[count];
for (int i = 0; i<count; i++){
intArr[i] = ((int*) voidPtr)[i];
}
但是,当我尝试用int打印数组int时,我收到一个seg-fault。
for (int i = 0; i<count; i++){
printf("%d ", intArr[i]);
}
有什么想法吗?
答案 0 :(得分:0)
你做错了什么,当编译器警告你时,你只需要使用强制转换器关闭它。不,你在脚下射击自己,谁应该受到指责? :)
你所做的就是说voidPtr现在变成了一个int *,请访问它的元素i
。这不正确。最有可能的是,在你的系统上,void *与int *不同,所以使用这个转换,你将访问不正确的元素。此外,你的空虚*似乎并没有指向足够大的位置 - 这就是导致崩溃的原因。
不要在C ++中使用void *,不要强制转换。