[英]How to free void array of void pointers?
我设法将问题缩小到以下代码段:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
void **arr;
int max = 10; //tr = 0;
int size = sizeof(int);
arr = malloc(max*sizeof(void*));
for (int i=0; i<=6; i++)
{
arr[i] = malloc(size);
memcpy(arr+i, &i, size);
}
for (int i=0; i<=6; i++)
{
printf("%d ", *(int*)(arr + i));
}
free(arr[0]);
free(arr[1]);
free(arr);
return 0;
}
释放arr
没关系,释放arr[0]
。 但是除此之外,我遇到了段错误。
我的分配有误吗? 或者是别的什么?
应该
for (int i=0; i<=6; i++)
{
arr[i] = malloc(size);
memcpy(arr[i], &i, size);
}
for (int i=0; i<=6; i++)
{
printf("%d ", *(int*)(arr[i]));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.