将存储在空指针处的Int数组复制到Int数组

时间:2015-10-22 21:17:48

标签: c++ c arrays void-pointers

在下面的循环中,我试图复制存储在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]);
  }

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你做错了什么,当编译器警告你时,你只需要使用强制转换器关闭它。不,你在脚下射击自己,谁应该受到指责? :)

你所做的就是说voidPtr现在变成了一个int *,请访问它的元素i。这不正确。最有可能的是,在你的系统上,void *与int *不同,所以使用这个转换,你将访问不正确的元素。此外,你的空虚*似乎并没有指向足够大的位置 - 这就是导致崩溃的原因。

不要在C ++中使用void *,不要强制转换。