繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM