马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
程序运行完成,在对最后一个动态申请的数组进行释放时出现:corrupted size vs. prev_size
Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: 没有那个文件或目录.
目前卡在这儿几天了。目前个人揣测是否自己申请的动态内存没有释放完? 还是因为什么。有大佬出现过类似的错误吗?
申请动态数组子函数如下:float complex*** rmall3(int m,int n,int t)
{
int i = 0;
int j = 0;
int k = 0;
float complex*** tt = NULL;
if((m > 0) && (n > 0) && (t > 0))
{
tt = (float complex***)malloc(sizeof(float complex**)*m);
for(i = 0;i < m;i++)
{
tt[i] = (float complex**)malloc(sizeof(float complex*)*n);
for (k = 0;k < n;k++)
{
tt[i][k] = (float complex*)malloc(sizeof(float complex)*t);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<t;k++)
{
tt[i][j][k]=0 + 0*I;
}
}
}
}
return tt;
}
释放动态内存数组的子函数如下:void fmall3(float complex*** tt,int m,int n)
{
int i;
int j;
for(i = 0;i < m;i++)
{
for (j = 0;j < n;j++)
{
free(tt[i][j]);
}
}
for(i = 0;i < m;i++)
{
free(tt[i]);
}
free(tt);
// tt = NULL;
}
|