如果已经在程序结束时分配了一些东西,我试图释放一个* 指针。这是正确的方法吗? 指针在另一个带参数的函数中(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.....
答案 0 :(得分:0)
这很难说,因为它取决于这些指针的分配方式。
但是,正如你有3级深度的指针,我认为它还不足以释放它们。
您应该查看valgrind
之类的工具,它们可以帮助您识别内存泄漏。
为了解释一下,char ***
意味着你有一个指向指向char的指针的指针。这意味着指针指向可以静态或动态分配的内存区域。所有其他级别也是如此。
你必须free()
完全是那些动态创建的关卡,i。即通过malloc()
,calloc()
,realloc()
或strdup()
。