在C++中释放在std :: string中分配的内存

Cha*_*nya 0 c++ memory

例如,我有字符串的静态声明

std::string s("test");
Run Code Online (Sandbox Code Playgroud)

将为字符串动态分配内存.当字符串s超出范围时,为字符串分配的内存将被释放?

的情况下 std::map

std::map <std::string, std::string> testMap;
Run Code Online (Sandbox Code Playgroud)

同样,如果这testMap也超出范围,std::string则调用析构函数并释放字符串的内存?

评论 ?提前致谢 :)

Luc*_*ore 5

如果你谈论的是那张动态分配里面std::string,那么,它会自动释放.

如果您正在使用new分配实际std::string,那么您需要在delete之后使用.