int do_memory()
{
int * empty_ptr = (int *) malloc(sizeof(int));
*empty_ptr = 5;
return *empty_ptr;
}
...
int b = do_memory();
free(&b); //obviously not valid
当b
超出范围,我会正确地假设empty_ptr中的内存仍然存在?但不可能免费,因此这是不好的代码?通过返回“本地”堆分配对象可能的内存泄漏
“当b超出范围时,我认为empty_ptr中的内存仍然存在?”是。 “但是不可能免费,因此这是不好的代码?”是的。 –