我试图编写一个函数来动态分配一个 3 维数组,但我的程序崩溃了。这是代码:
#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);
}
你知道问题出在哪里吗?是因为我在return语句后释放了函数中的内存吗?
提前致谢。
最佳答案
你没有初始化变量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;
您应该以适当的方式格式化您的代码。否则很难阅读。
关于c - 3维数组的分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315675/