c++ - C++中字符串的堆内存

标签 c++ arrays string pointers heap-memory

我创建了一个项目文件,并在 int main 中调用了一个函数。函数中有一个字符数组corr[40],它把用户输入的字母一个字母一个字母地存放起来。(这是一个刽子手游戏)。函数执行完后,程序又回到main。如果再次调用该函数,则数组具有上次调用的输入并且不会被删除。因此只有先前输入的几个字符被新字符覆盖。

所以我想知道如何从堆分配内存到数组(使用指针)?还是有任何其他方法可以解决此问题?

最佳答案

您有一个 char[40] 作为函数中的局部变量。由于这不是类类型,因此没有构造函数。初始值将取决于之前该内存位置中的任何内容。这很可能是之前的全部或部分信件。

如果你希望数组每次都为零,你可以只使用std::fill(std::begin(foo), std::end(foo), 0);

请注意,使用堆内存不是解决方案。仍然没有初始化堆内存的构造函数,所以它也有任何旧值。使用 std::string 是一种解决方案,确实有一个构造函数。

关于c++ - C++中字符串的堆内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21279133/

相关文章:

c++ - 如何在 C++ 中将 double 转换为字符串?

string - 无法将(无类型字符串常量)转换为 *string

python - 查找并提取字符串中的多个子字符串?

比较字符串出错

c++ asm 将指针移动到寄存器 = 访问冲突错误

c++ - 我找不到 qt-creator 应该制作的 .exe 文件

c++ - C++中内存池的探究

java - 如何从 JTable txt 文件创建字符串?

javascript - 返回一个新数组,其中包含除第一个值之外的所有值,每个值加 7

JavaScript:在不使用 `eval` 的情况下将平面数组转换为树状结构