我试图编写一个函数来动态分配三维数组,但是我的程序崩溃了。这里是代码:
#include <stdio.h>
#include<stdlib.h>
int*** funcao(int a,int b,int c)
{
int ***ppp=malloc(a*sizeof(int **));
int i,j,k;
for(i;i<a;i++)
{
ppp[i]=malloc(b*sizeof(int *));
}
for( i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
ppp[i][j]=malloc( c*sizeof(int));
}
}
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
for(k=0;k<c;k++)
{
ppp[i][j][k]=k*i*j;
}
}
}
return ppp;
for( i=0;i<a;i++)
{
for( j=0;j<b;j++)
{
free(ppp[i][j]);
}
}
for( i=0;i<a;i++)
{
free(ppp[i]);
}
free(ppp);
}
int main()
{
int ***ppp=funcao(2,5,7);
}
你知道问题出在哪里吗?是因为我在返回语句之后释放了函数中的内存吗?
提前谢谢。
最佳答案
您没有初始化变量i
int i,j,k;
所以循环有未定义的行为
for(i;i<a;i++){
ppp[i]=malloc(b*sizeof(int *));
}
也不清楚这部分功能的作用
for( i=0;i<a;i++){
for( j=0;j<b;j++){
free(ppp[i][j]);
}}
for( i=0;i<a;i++){
free(ppp[i]);
}
free(ppp);
}
返回语句后
return ppp;
您应该以适当的方式格式化代码。否则很难读懂。