c - 如何释放具有二维数组作为属性的二维结构

标签 c memory struct malloc free

我已经将结构定义为

struct global_data
{
double el[6][6];
}**C;

并将内存分配为

C = (struct global_data **) malloc(20*sizeof(struct     global_data *));

for(i=0;i<=20;i++)
{
C[i]=(struct global_data *) malloc(sizeof(struct global_data)*20);
}

谁能建议我如何释放这里分配的内存?

最佳答案

为您创建的每个 malloc 调用 free()

for(int i=0;i<20;i++) 
{
    free( C[i] ) ;
}
free( C ) ;

您的 for 循环也不正确,您进行了 21 次迭代而不是 20 次迭代,应该是:

for(i=0;i<20;i++)
{
    C[i]=(struct global_data *) malloc(sizeof(struct global_data)*20);
}

关于c - 如何释放具有二维数组作为属性的二维结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058074/

相关文章:

c - 终端终止后窗口立即关闭

c - Linux cc 项目内目录中的库编译?

c++ - 复制内存块

ios - 应用程序的 Live Bytes 达到 1 GB 以上,模拟器显示空白屏幕

python - 如何在 Windows XP/7 机器上找到内存中的字节序列?

导入十六进制文件后无法在 MPLab 中调试

c - 'struct <anonymous>' 没有成员命名

c++ - 如何简单地分配不同结构的 vector ?

go - 使用自己的结构(解码的 JSON)初始化外部 lib 结构会产生类型错误

c - 在 while 循环中使用 #define