如何将可变大小的 void 指针存储在一个指针数组中?
Posted
技术标签:
【中文标题】如何将可变大小的 void 指针存储在一个指针数组中?【英文标题】:How to store void pointers of variable size in one single pointer array? 【发布时间】: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 指针的起始地址数组,因为我稍后会使用它。
【参考方案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 * 大小未知 @niyantsizeof(void)
没有意义。 sizeof(void*)
如果你想要指向 void
的指针的大小
那么在这种情况下你如何索引**myarray??以上是关于如何将可变大小的 void 指针存储在一个指针数组中?的主要内容,如果未能解决你的问题,请参考以下文章