问题标签 [bad-alloc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
366 浏览

windows - 内存分配与交换(在 Windows 下)

抱歉我的问题比较笼统,但我找不到明确的答案:

鉴于我还有空闲的交换内存,并且我以合理的块(~1MB)分配内存->内存分配仍然会因任何原因而失败吗?

0 投票
2 回答
105448 浏览

c++ - “std::bad_alloc”:我使用了太多内存吗?

消息:

我查看了 gdb 回溯,这是我自己实现的最低级别的方法:

您在上面看到的 cout 语句表明它在 7000 多次迭代后终止。上述函数仅在我的应用程序快结束时调用一次。我在调用上述函数之前调用了一个非常相似的函数,这不会导致问题。

0 投票
1 回答
419 浏览

c++ - 为什么我的 WinCE 应用程序中没有 std::bad_alloc?

根据 C++ 标准,operator new应该throw std::bad_alloc();在分配失败时。

为了测试这种行为,我想出了以下代码:

问题是,出乎意料的是,nullptr每次我在 Windows Mobile 2003 (Windows CE 4.2) 上运行它时都会遇到这种情况。

编译器是 Microsoft (R) C/C++ Optimizing Compiler Version 14.00.60131 for ARM,所以我认为编译器不符合标准的情况并非如此。

我还尝试throw std::bad_alloc()在给定try的块内手动(并成功,因此该catch部分应在失败的情况下触发new)。另一件事是,set_new_handler()但这也不起作用。如果它很重要,我Big的大小为 10MB。

那么你能告诉我我错过了什么吗?为什么我得不到std::bad_alloc

编辑1:我不是在寻找如何克服这个问题,而是因为它首先发生的原因。

编辑2:在调试过程中,我尽可能地简化了程序,new我得到的反汇编输出是:

不应该有任何系统调用吗?不应该更复杂吗?有人可以帮忙调查一下吗?

0 投票
7 回答
158673 浏览

c++ - 如何处理 C++ 中的 bad_alloc?

有一个调用的方法foo有时会返回以下错误:

有没有办法可以使用try-catch块来阻止此错误终止我的程序(我想要做的就是 return -1)?

如果是这样,它的语法是什么?

bad_alloc在 C++中我还能如何处理?

0 投票
1 回答
633 浏览

c++ - 为什么 new[-1] 会产生 segfault,而 new[-2] 会抛出 bad_alloc?

我试图bad_alloc通过将一些否定参数传递给new[]. 当传递小的负数时,我得到了我所希望的 - a bad_alloc。但是,当通过时-1,我可以看到我的对象被构​​造了数千次(我在构造函数中打印静态计数器)并且应用程序以段错误终止。

new[]将有符号整数转换为size_t-1的最大值size_t也是-2maximum - 1以此类推。

那么为什么new[]在接收到一些巨大的数字时抛出异常,但在接收到最大值时尝试分配size_t呢?1111...1和 和1111...0有什么不一样new[]?:)

提前致谢!

0 投票
2 回答
5293 浏览

xorg - IntelSandyBridge (Intel HD Graphics 3000) 上的“X 错误”BadAlloc GLX BadContext

我正在运行一个debian stableThinkPad X1 (1294-3QG),其中包含squeeze-backportsGraphicsModi 所需的三个包:

在运行该内核时,例如启动paraview会导致这些错误:

在网上的某个地方,我找到了在 中提供内存设置的提示xorg.conf,但这并没有解决我的问题。
在当前稳定的内核中启动工作正常。

运行glxgears结果类似:

xserver-xorg-video-intel我进一步尝试通过将(以及所有依赖项libdrm-intel1 libxfont1, xserver-common, xserver-xorg, xserver-xorg-core, xserver-xorg-input-evdev, xserver-xorg-video-fbdev和)更新到反向移植来解决问题xserver-xorg-video-vesa,但这并不成功。

另外,我找到了条目

在 的输出中dmesg

0 投票
2 回答
272 浏览

memory - 内存不足 - 为什么系统不分页最近未使用?

我有一个程序可以进行一些非常密集的图形工作,并且需要大量内存(> 8GB),但是我的机器目前只有 8GB 的​​ RAM,这意味着程序在内存不足时会抛出错误的分配。

除了这个程序,我还打开了一些其他的东西,占用了我的一些主内存,但大多数情况下只是程序吃掉了内存。

现在,我想知道为什么系统在内存使用量超过 8GB 时会抛出 a bad_alloc,而不是页面错误和换出一些页面?这不是分页和虚拟内存应该解决的问题之一吗?

我应该能够运行需要 > 8GB 内存的程序,如果它只是分页出最近未访问的页面,以便能够为所需的内存创建新页面。

任何人都可以给出解释吗?

我的机器有一个 8GB 的​​页面文件。

0 投票
3 回答
1932 浏览

c++ - 为什么动态内存分配在 600MB 之后会失败?

我使用三维 char 数组实现了一个布隆过滤器(位表),它运行良好,直到它无法再分配内存并给出bad_alloc消息。它在分配 600MB 后的下一个扩展请求中给了我这个错误。

布隆过滤器(数组)预计会增长到 8 到 10GB。

这是我用来分配(扩展)位表的代码。

数组的最大允许大小是多少,如果这不是问题,我该怎么办。

编辑:它是使用 32 位平台开发的。

它在具有 8GB RAM 的 64 位平台(服务器)上运行。

0 投票
1 回答
1512 浏览

visual-studio - Visual Studio 中的内存错误,但有大量可用内存

这行代码产生以下错误

内存位置 0x0037c29c 处的 std::bad_alloc

我认为这与“内存不足”有关。当我减少分配的数量时,它运行良好。

我的机器上有足够的内存(16 GB),资源监视器显示只有一小部分内存被 Visual Studio 使用。我添加了编译器选项/F 4000000000/LARGEADDRESSAWARE,但仍然出现错误。

如何解决?

0 投票
2 回答
292 浏览

c++ - 列表分配错误

我有这个虚拟方法:

哪里children是 a std::list<std::shared_ptr<base_class>>,并my_class继承base_class。但是,在第一次递归调用 (of my_class::to_string) 之后,在我返回这个 child 之后str,我得到了一个错误的分配。

为什么?