gpt4 book ai didi

c++ - 二维字符数组上的 memset

转载 作者:行者123 更新时间:2023-11-30 00:56:10 25 4
gpt4 key购买 nike

对于 2D 数组,一切都很好:

 int **p = new int*[8];
for (int i = 0; i < 8; i++)
p[i] = new int[8];
memset(p, 0, 64 * sizeof(int))

但是对于二维字符数组,我得到一个运行时错误

 char **p = new char*[8];
for (int i = 0; i < 8; i++)
p[i] = new char[8];
memset(p, 0, 64 * sizeof(char));

我的代码有什么问题?

最佳答案

我认为两者都可能是错误的,只有第二个在运行时失败了。任何时候你用 new 分配一个数组,它都会进入堆并返回一个指针。因此,在您的情况下,您有 8 个 X 类型的指针存储在 p 中。您没有有一个 8x8 的连续内存块,而是有 8 个指针指向 8 个内存块,所有大小都是 8*sizeof(X)

解决方案是为 p 中的每个元素调用 memset 或分配一个内存块并使用索引数学来模拟多维访问或我可能的其他一些技巧失踪。

关于c++ - 二维字符数组上的 memset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com