gpt4 book ai didi

c++ - 出现 bad_alloc 错误

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

我一直在研究我的单词搜索算法。它工作得很好,但后来我决定测试一个非常大的拼图,比如 10000 x 10000,它是一个充满符号的矩阵。所以创建了一个小程序来解决这个难题。然后我运行单词搜索,它因 bad_alloc 而崩溃。我使用二维数组。代码:

        string ** Matrix = new string*[Height];

for(int i = 0; i < Height; ++i)
{
Matrix[i] = new string[Widht];
}

高度=宽度=10000;

我不知道为什么会这样。我读过 new 并没有真正的限制,为什么它会崩溃?

顺便说一下,为了好玩,我打开了 Windows 任务管理器,同时程序尝试分配内存,内存增加到 2m+,然后崩溃。

最佳答案

std::string 类对于调试版本中的类对象只有 28 个字节。不计算实际字符串所需的任何存储空间。因此,您的程序分配了 10000 x 10000 x 28 = 2.8 GB。 Windows 中的 32 位进程不能分配超过 2 GB 的空间,无论给予还是索取,您都远远超过了该限制。

您需要编写更智能的代码或切换到 64 位代码生成。取得成功的一个明显方法是认识到单词搜索程序每个单元格只需要一个字符,而不是整个字符串。因此,char 就足够了。或者将整行网格存储到单个 std::string 中。将您的内存需求降低两个数量级。

关于c++ - 出现 bad_alloc 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756966/

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