我有一个内存分配问题。如果我char*
在一个else
块中声明 a ,这意味着当块执行char*
完毕时它被销毁。else
该else
块位于while
循环中,因此它将迭代多次。但是,如果块中char*
声明的else
别名为malloc'd
变量,如下例所示。我的问题是我如何收取这样的费用?我觉得如果我释放 tempchar*
变量,我会导致分段错误,因为我也会释放我想要保留的变量。如果是这样的话,我不知道该free
声明的去向。
char* print_path = NULL;
(剪断)
(while)
else{
char* temp_path = print_path;
int temp_size = strlen(temp_path)+strlen(file_name(child->fts_path))+1;
print_path = (char*)malloc(temp_size);
strcpy(print_path, temp_path);
strncat(print_path, file_name(child->fts_path), strlen(file_name(child->fts_path)));
printf("%s:\n\n", print_path);
}
(剪断)
我想指出,在我知道它不会再次执行之后,我在程序结束时执行了 free print_path。但是,我想释放的是循环的中间执行。任何帮助,将不胜感激。谢谢!