例如我们有如下C语言函数
char* return_str() {
char* retVal = (char*) malloc(sizeof(char) * N);
// do something
return retVal;
}
int main(void) {
char* str = return_str();
// do something
return 0;
}
问题是:在函数return_str()
中创建的堆内存 retVal
能否作为返回值?如果能的话,那么在哪里释放这块内存?在main
函数中free(str)
吗?
能,在你用的时候,用完就可以手动free了
所以是调用方去free这个指针吗
@飞鸟_Asuka: 是的
用完即弃,申请与释放成对出现