gpt4 book ai didi

c - 如何释放void指针的void数组?

转载 作者:行者123 更新时间:2023-11-30 15:08:45 26 4
gpt4 key购买 nike

我设法将问题范围缩小到以下代码片段:

#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]));
}

关于c - 如何释放void指针的void数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37169260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com