c++ 在函数中创建std::string并返回它是否会造成内存泄漏?

ia2d9nvy  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(2966)

调用此函数是否会造成内存泄漏?

#include <iostream>

std::string somefunc()
{
  std::string somestrng;
  somestrng = "Fred";
  return somestrng;
}

int main()
{
    std::cout << "Hello World!\n";
    std::string receiver = somefunc();
    std::cout << "-->" << receiver.data() << "<--" << std::endl;
}

我读过“价值语义学”,但我无法想象它。

piok6c0g

piok6c0g1#

否,显示的程序中没有内存泄漏。
一般来说,当您配置动态内存,而忽略解除配置该内存时,就会发生内存遗漏。
在示例程序中,您没有直接分配任何动态内存。std::string可能会分配一些动态内存,但也会释放它。为了将来学习,我建议学习RAII模式,string类遵循该模式。

相关问题