这会释放我所有的**指针内存吗?

时间:2014-04-05 13:30:06

标签: c pointers

如果已经在程序结束时分配了一些东西,我试图释放一个* 指针。这是正确的方法吗? 指针在另一个带参数的函数中(char * * mena)。 它似乎工作,因为当我尝试打印值后,程序崩溃。我只是想确定一下。

int n(FILE *file, char ***mena,int already){
 //var declaration

  if (already) {
          for (i=0;i<already;i++)
            free((*mena)[i]);

          free(*mena);
          *mena=NULL;
     }
// function continues.....

1 个答案:

答案 0 :(得分:0)

这很难说,因为它取决于这些指针的分配方式。

但是,正如你有3级深度的指针,我认为它还不足以释放它们。

您应该查看valgrind之类的工具,它们可以帮助您识别内存泄漏。

为了解释一下,char ***意味着你有一个指向指向char的指针的指针。这意味着指针指向可以静态或动态分配的内存区域。所有其他级别也是如此。

你必须free()完全是那些动态创建的关卡,i。即通过malloc()calloc()realloc()strdup()