返回未引用的新内存泄漏

return dereferenced new - memory leak?

本文关键字:内存 泄漏 新内存 引用 返回      更新时间:2023-10-16

我想知道这是否会导致内存泄漏:

std::string test() {
    return *(new std::string(""));
}

是的,这是内存泄漏。当函数返回时,生成一个原字符串对象的副本。

那么原来的新指针就会脱离作用域并丢失——这是一个泄漏。

为了减少泄漏,让它返回一个引用:

std::string& test() {
   return *(new std::string(""));
}