原则上是谁动态申请内存,那就该由谁来进行释放
其中一个好处是追查是否有内存泄露时,可根据这个原则进行追查
使用函数进行说明:
1.第一种方式,fun函数的返回值的存储变量,是由其调用方自己创建的,因此调用方能够知道这个变量什么时候使用结束,也因此由其自己进行释放内存
{
char *string = (char*)malloc(sizeof(char) * 50);
fun(string);
free(string);
}
2:第二种方式,由一个功能模块提供内存的管理,如:
char* create_str() ;
void free_str(char *stri);
{
char *string = create_str();
free_str(string);
}
3.下面的列子是个不好的例子,因此调用方并不是创建这个变量的一方,而后自己使用完后,却需要自己手动释放该内存,这样会使调用方容易忘记该情况
fun() {
return (char*)malloc(sizeof(char) * 50);
}
{
char *string = fun():
free(string)
}