我创建了一个项目文件,并在 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/