首页 > 解决方案 > 是否有必要为 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;
}

标签: c++string

解决方案


字符串类型,定义为 char *

char*只是一个指针。它不是一个字符串。它可以指向字符串中的一个字符。

我知道在 C 中我们需要删除字符串类型的任何内存分配

您(通常)需要释放您分配的所有内存,无论您为哪种类型分配内存。这适用于两种语言。

我的假设是在 C++ 字符串类型中完成内存取消分配,但如果我错了,请纠正我。

你的假设没有错。精心设计的类会释放它们分配的东西。


推荐阅读