c++ - 是否有必要为 C++ 函数中定义的字符串变量释放内存?
问题描述
问题描述:
在 C 中需要删除为指向数组的指针分配的内存
char *
(我们如何在 C 中定义字符串)。
我的问题:
我想知道 C++ 字符串类型是否也需要它。
例如:
假设我有一个函数负责将所有大写字符转换为小写,如下所示。
string convertToLowerCase(string str) {
string res = str;
for (int i=0; i<str.length();++i) {
res[i]= tolower(str[i]);
}
return res;
}
- 调用此函数比较两个字符串后,我不需要
convertToLowerCase
在调用方取消分配函数的返回字符串变量。 - 我的理解是内存释放是在 C++ 字符串类型中完成的。
- 如果我错了,请纠正我。
解决方案
字符串类型,定义为 char *
char*
只是一个指针。它不是一个字符串。它可以指向字符串中的一个字符。
我知道在 C 中我们需要删除字符串类型的任何内存分配
您(通常)需要释放您分配的所有内存,无论您为哪种类型分配内存。这适用于两种语言。
我的假设是在 C++ 字符串类型中完成内存取消分配,但如果我错了,请纠正我。
你的假设没有错。精心设计的类会释放它们分配的东西。
推荐阅读
- javascript - 使用 allowHTML 和 useHTMl 导出 highchart 时出错
- python - 如何在 Sublime Text 3 中将 Python (3.81) 与 Anaconda 一起使用
- typescript - 禁止在函数调用中传递泛型类型
- google-apps-script - 如何在谷歌表格中删除带有标题的空列?
- spring - 在 Spring Boot 应用程序中使用 Gradle 将 Nexus 作为依赖解析器
- java - 如何在java中实现模式匹配并避免instanceof?
- python - 多个字典中的平均值?
- caching - chome 开发工具中的传输数据部分是否也计算从服务人员传输的数据?
- python - 如何在 Python 中垂直显示我的输出?
- mysql - SQL 查询不使用三个表一起返回正确的结果?