复制存储在空指针的整型数组到整型数组

Copying Int Array Stored at Void Pointer to Int Array

本文关键字:整型 数组 空指针 存储 复制      更新时间:2023-10-16

在下面的循环中,我试图复制存储在voidPtr地址的数据。这里的数据是一个长度为count的整数数组。我读到将这个数组强制转换为int类型,然后执行复制(如下所示)应该可以工作。

int intArr[count];
  for (int i = 0; i<count; i++){
    intArr[i] = ((int*) voidPtr)[i];
  }

然而,当我尝试用int来打印数组时,我收到了一个段错误。

  for (int i = 0; i<count; i++){
    printf("%d ", intArr[i]);
  }

任何想法?

您正在做错误的事情,当编译器警告您时,您只需通过强制转换将其关闭。不,你搬起石头砸了自己的脚,这该怪谁呢?:)

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

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