k0n*_*3ru 2 c++ malloc pointers memory-leaks memory-management
我有一个函数foo喜欢
myType** foo(){
    myType **array = malloc( .... );
    //Do some stuff
    return array;
}
在这里我有malloced,但没有释放它,因为我返回它.这会导致内存泄漏吗?我使用它后,我应该在调用函数中明确释放它吗?
仅当您不释放内存(无论在何处)时,这都是内存泄漏。
在这种情况下,您应该free在调用函数并完成指针操作后执行此操作。
但这是C的方式。在C ++中,您将返回一个智能指针,并使用new代替malloc。
使用这种类型的函数,调用者是指针指向的资源的"所有者".因此呼叫者必须释放资源,或者将其传递给其他人.
在C++中,人们倾向于返回一个管理自己资源的类型,例如一个std::vector或一个智能指针,它们既负责资源取消分配又使所有权变得清晰.
请参阅此示例,不要担心,请阅读有关复制省略的所有信息,特别是命名返回值优化(NRVO).
std::vector<std::vector<SomeType>> foo()
{
  std::vector<std::vector<SomeType>> tmp = ....;
  // do some stuff
  return tmp;
}