小编Pat*_*ite的帖子

使用灵活的阵列成员释放动态分配的结构

我有一个数据结构,定义如下:

struct varr {
    int n; //length of data array
    double data[];
};
Run Code Online (Sandbox Code Playgroud)

数据阵列最初需要大小为1,但允许增加的可能性.

struct varr *我分配空间时使用

struct varr *p = malloc(sizeof(struct varr) + sizeof(double));
Run Code Online (Sandbox Code Playgroud)

重新分配空间以增加我使用的数据数组的大小

p = realloc(p, sizeof(struct varr) + p->n * sizeof(double));//p->n having already been set
Run Code Online (Sandbox Code Playgroud)

我的问题是"我应该如何释放为此结构分配的内存?"

我尝试过一个简单free(p);但根据memcheck导致内存泄漏的问题.对于我为此目的构建数据的方式,或者我如何分配内存,是否存在根本性的错误?

== ==注意

我通过使用指针而不是显式声明的数组解决了这个问题.然而,我仍然对一个简明的答案感兴趣,为什么这不起作用.

c malloc dynamic-allocation

3
推荐指数
1
解决办法
2052
查看次数

标签 统计

c ×1

dynamic-allocation ×1

malloc ×1