首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

动态申请内存有关问题

2013-03-20 
动态申请内存问题请教各位,若一个调用函数体内,动态申请了内存,在main函数中调用此函数返回一个指针后,调

动态申请内存问题
请教各位,若一个调用函数体内,动态申请了内存,在main函数中调用此函数返回一个指针后,调用函数内的动态内存如何释放?譬如下面的程序


Complex***   hanshu(Complex ***p)
{
        
    Complex ***Z=(Complex ***)malloc((Nx1+1) * sizeof(Complex**));
if(Z== NULL)
{
printf("Malloc False");
}
for(int i =0; i< Nx1+1; i++)
{
Z[i] = (Complex **)malloc((Ny1+1) * sizeof(Complex*));
if(Z[i] == NULL)
{
printf("Malloc False");
}
        for( int j = 0; j< Ny1+1; j++)
{
Z[i][j]=(Complex *)malloc((Nz1+1) * sizeof(Complex));
        if(Z[i][j] == NULL)
{
    printf("Malloc False");
}
}
}
    for(int i=0; i<Nx1+1; i++)   
    {
        for(int j=0; j<Ny1+1; j++)   
        { 
            for(int k=0;k<Nz1+1;k++)
            { 
                Z[i][j][k]=p[i][j][k];
          }
     }
     }
     return Z;
}
void main()
{
        Complex co (0,0);   
        Complex ***A=(Complex ***)malloc((Nx1+1) * sizeof(Complex**));
if(A== NULL)
{
printf("Malloc False");
}
for(int i =0; i< Nx1+1; i++)
{
A[i] = (Complex **)malloc((Ny1+1) * sizeof(Complex*));
if(A[i] == NULL)
{
printf("Malloc False");
}
        for( int j = 0; j< Ny1+1; j++)
{
A[i][j]=(Complex *)malloc((Nz1+1) * sizeof(Complex));
        if(A[i][j] == NULL)
{
    printf("Malloc False");
}
}
}
    
     Complex ***B=(Complex ***)malloc((Nx1+1) * sizeof(Complex**));
if(B== NULL)
{
printf("Malloc False");
}
for(int i =0; i< Nx1+1; i++)
{
B[i] = (Complex **)malloc((Ny1+1) * sizeof(Complex*));
if(Z[i] == NULL)
{
printf("Malloc False");
}
        for( int j = 0; j< Ny1+1; j++)
{
B[i][j]=(Complex *)malloc((Nz1+1) * sizeof(Complex));
        if(B[i][j] == NULL)
{
    printf("Malloc False");
}
}
}
    for(int i=0; i<Nx1+1; i++)   
    {
        for(int j=0; j<Ny1+1; j++)   
        { 


            for(int k=0;k<Nz1+1;k++)
            { 
                B[i][j][k]=co;
     }
}
     }
     A=hanshu(B);
     
}


Complex是我自己编写的一个复数类。我A用完之后,是只需要释放A的空间就可以了吗?那hanshu里面的Z的空间用释放吗?B后续程序还要用到,先不用释放。 动态申请内存 C++ malloc free
[解决办法]
C++提倡用new delete

热点排行