C 中的字符串的堆内存
Heap Memory for a String in C++
我已经创建了一个项目文件,在int main中,我呼叫一个函数。在该函数中,有一个字符阵列Corr [40],它通过字母来存储用户的输入。(其hangman游戏)。执行功能后,然后程序返回到MAIN。如果再次调用函数,则数组具有上一个呼叫的输入,并且不会删除。因此,上一个输入中只有几个字符被新的字符覆盖。
所以我想知道如何将内存从堆分配到数组(使用指针)?还是我可以纠正此问题的其他方法?
您将char[40]
作为函数中的本地变量。由于那不是类型,因此没有构造函数。初始值将取决于以前在该内存位置中使用过的任何东西。这很可能是以前的所有字母或某些字母。
如果您希望每次阵列为零,则只需使用std::fill(std::begin(foo), std::end(foo), 0);
请注意,使用堆内存不是解决方案。仍然没有构造函数来初始化堆内存,因此也将具有任何旧值。使用std :: String, do 具有构造函数,是一个解决方案。
相关文章:
- 将字符串存储在c++中的稳定内存中
- 为什么字符串的 move() 会改变内存中底层数据的位置?
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 字符串共享内存映射的向量
- C++将字符串传递给 C 库以进行内存管理
- 内存增加和字符串流?
- 如何从内存中读取字符串?
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 交换两个字符串时访问正确的内存时,我遇到了分段错误
- 通过 mmap-ed 共享内存传递可变长度 C 字符串
- 字符串的内存高效向量
- 为什么cout输出内存地址不是字符串?
- 如何使用 RPM 从内存中读取标准::字符串
- 在带有 (void*) 强制转换的字符串中打印字符的内存地址
- Visual C 运行时:Malloc将指针返回到已经使用的内存(包含实际字符串)
- 字符串标记化期间的内存损坏
- 如果我不将预先编写的字符串保存到变量,它还在内存中吗?
- 放置在外部 DLL 中的类中的字符串数据的内存损坏
- 删除字符串指针在struct中的内存
- 字符串编码用于内存优化