调用此函数是否会造成内存泄漏?
#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;
}
我读过“价值语义学”,但我无法想象它。
1条答案
按热度按时间piok6c0g1#
否,显示的程序中没有内存泄漏。
一般来说,当您配置动态内存,而忽略解除配置该内存时,就会发生内存遗漏。
在示例程序中,您没有直接分配任何动态内存。
std::string
可能会分配一些动态内存,但也会释放它。为了将来学习,我建议学习RAII模式,string类遵循该模式。