嗨,在我的代码中释放数组有问题。

 int main(){
int **pole = mallocator(); ...

在main中,我调用分配内存的函数,它如下所示:
int ** mallocator(){
int **pole = (int **) malloc(sizeof(int*)*RADEK);

for(int i=0; i < RADEK; i++){
    pole[i] = (int *) malloc(sizeof(int)*RADEK);

 }

return pole;
}

最后我用这个函数释放了它:
void freedom(int **pole){

for(int i=0; i < RADEK; i++){
    printf("%d\n", i);
    free(pole[i]);
}
free(pole);
}

RADEK值为25时为常数。
我认为这是有效的,但是瓦尔格林说我有27个通球和26个自由球,并且说一个盖帽仍然可以达到。关于如何做到不泄密有什么想法吗?谢谢
编辑:返回行不应该出现在错误复制的循环中,谢谢注意。可能是编译器的错误。如果我使用gcc而不是g++它会说没有泄漏,但是当我使用g++编译时它会说静态仍然可以访问:72704即使我在代码中没有使用malloc。

最佳答案

在修正mallocator()函数之后,如注释中所指定。
然后main()函数可以通过以下方式释放分配的内存:

for( int i=0; i<RADEK; i++ )
{
    free( pole[i]);
}
free( pole );

10-07 16:03
查看更多