C 中的字符串的堆内存

Heap Memory for a String in C++

本文关键字:内存 字符串      更新时间:2023-10-16

我已经创建了一个项目文件,在int main中,我呼叫一个函数。在该函数中,有一个字符阵列Corr [40],它通过字母来存储用户的输入。(其hangman游戏)。执行功能后,然后程序返回到MAIN。如果再次调用函数,则数组具有上一个呼叫的输入,并且不会删除。因此,上一个输入中只有几个字符被新的字符覆盖。

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

您将char[40]作为函数中的本地变量。由于那不是类型,因此没有构造函数。初始值将取决于以前在该内存位置中使用过的任何东西。这很可能是以前的所有字母或某些字母。

如果您希望每次阵列为零,则只需使用std::fill(std::begin(foo), std::end(foo), 0);

请注意,使用堆内存不是解决方案。仍然没有构造函数来初始化堆内存,因此也将具有任何旧值。使用std :: String, do 具有构造函数,是一个解决方案。