【发布时间】:2017-09-18 17:01:43
【问题描述】:
我正在开发一个几乎没有未发现的内存泄漏的程序。该代码实际上已有数十年的历史,并且是由一个不知名的人编写的。我有返回char * 的函数,我想知道是否需要free 内存。
具体来说,我有一个替换字符串中的子字符串的函数,我将指针返回到新的malloced 内存。我是free 原始字符串吗?
原版:
return(findAndReplace(str, "•",rstring));
新版本:
char *result = findAndReplace(str, "•", rstring);
free(str);
return result;
问题是:我能否 100% 确定,因为我有一个从其他地方返回的指针,所以内存已被分配?释放该内存是否安全(假设它没有在其他任何地方使用)?
编辑: str 来自这里:
str = axiom_element_get_text(element, env, messageDataNode);
【问题讨论】:
-
答案取决于
findAndReplace的实现方式以及str是否与malloc一起分配。指针有很多用途;分配内存的句柄只是其中之一。 -
您只能
free由malloc、calloc或realloc返回的内存。检查str是否符合这个条件。 -
@xyious--如果内存是在预编译的库函数中分配的,你可能应该使用库中匹配的释放函数......
-
不过,我真的很想知道投票是关于什么的......感觉这是一个可以帮助很多人的问题......
标签: c pointers memory-management malloc