【问题标题】:How to store void pointers of variable size in one single pointer array?如何将可变大小的 void 指针存储在一个指针数组中?
【发布时间】:2015-08-24 05:51:34
【问题描述】:

我有一个看起来像这样的代码

  void * mypointer;
  void * array = malloc(sizeof(void*)*10)
  loop{
       mypointer = malloc(some random size);
       memset(mypointer,start,end)
       array[i++] = mypointer++
   }

现在这是抛出一个异常

  'void*' is unknown size for array and 'void' illeagal with all types

编辑

我也尝试使用 ** 数组,但它也会引发异常。

【问题讨论】:

  • void * 的大小没有变化...但void * array 将指向没有大小的void,而不是void *
  • 那么如何解决这个问题呢?我有点卡住了,需要有这些随机大小的 void 指针的起始地址数组,因为我稍后会使用它。

标签: c++ c pointers visual-c++


【解决方案1】:

由于array 应该是一个指针数组,所以使用:

void ** array = malloc(sizeof(void*)*10)

当你使用

void* array = ...

您不能像在下一行中那样索引array

array[i++] = mypointer++;

记住

array[k] = *(array+k);

只有当sizeof(*array) 可以被确定时,array+k 才能被评估。 sizeof(*array) 无法确定 array 是否属于 void* 类型。

【讨论】:

  • 我所做的是 void ** array = (void *)malloc(sizeof(void)*10) 仍然在 array[i++] = mypointer++ that void * 大小未知
  • @niyant sizeof(void) 没有意义。 sizeof(void*) 如果你想要指向 void 的指针的大小
  • 那么在这种情况下你如何索引**myarray??
猜你喜欢
  • 1970-01-01
  • 2019-02-03
  • 2014-07-22
  • 2019-09-27
  • 1970-01-01
  • 2014-05-30
  • 2011-05-30
  • 1970-01-01
  • 2020-04-01
相关资源
最近更新 更多