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

标签 c++ memory

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

std::string s("test");

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

如果是std::map

std::map <std::string, std::string> testMap;

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

评论? 提前致谢:)

最佳答案

如果您谈论的是在std::string内部 进行的动态分配,那么是的,它会自动释放。

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

关于c++ - 释放在 C++ 中的 std::string 中分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13873544/

相关文章:

python - 列出 ipython 和 jupyter 中的内存使用情况

java - JNA 使用 32 位 JVM 运行时内存访问无效

c - 释放未分配的指针

c# - 当 c# 访问 c++ dll 时尝试读取或写入 protected 内存错误

C++ 调试断言失败,表达式 : _BLOCK_TYPE_IS_VALID(pHead - blockUse )

c++ - std::uniform_int_distribution 不够随机

c++ - 为什么 pthread_key_create 析构函数被调用了几次?

c++ - 传递给CPP中的函数时{}是什么?

Python,从内存中删除密码

C++ 高效使用 new 运算符