大数组的堆栈溢出,但同样大的向量的堆栈溢出?

2024-04-11

今天我在处理大型数据结构时遇到了一个有趣的问题。我最初使用向量来存储超过 1000000 个整数,但后来决定我实际上并不需要向量的动态功能(无论如何,我在声明后就保留了 1000000 个位置),相反,这将是有益的,能够在数据结构中的任何位置添加值。所以我把它切换到一个数组BAM堆栈溢出。我猜测这是因为在编译时声明数组的大小将其放入堆栈中并使用动态向量而不是将其放在堆上(我猜它更大?)。

那么这里的正确答案是什么?回到动态内存系统只是为了将其放入堆中?增加堆栈的大小?还是我对这里的整件事都偏离了基础......?

Thanks!


我最初使用向量来存储超过 1000000 个整数

好主意。

但后来决定我实际上并不需要矢量的动态功能(无论如何,我一宣布就保留了 1000000 个位置)

这可不是什么好主意。你确实需要它。

相反,能够在数据结构中的任何位置添加值将是有益的。

我不跟。

我猜测这是因为在编译时声明数组的大小将其放入堆栈中并使用动态向量而不是将其放在堆上(我猜它更大?)。

很多。默认情况下,调用堆栈的大小通常约为 1MB-2MB。您的“堆”(免费存储)实际上仅受可用 RAM 的限制。

那么这里的正确答案是什么?回到动态内存系统只是为了将其放入堆中?

Yes.

[编辑:约阿希姆是对的——static是另一个可能的答案。]

增加堆栈的大小?

您可以,但即使您可以从中拉伸 4MB,您也没有为其他本地数据变量留下回旋余地。最好使用动态内存——这是正确的做法。

还是我对这里的整件事都偏离了基础......?

No.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数组的堆栈溢出,但同样大的向量的堆栈溢出? 的相关文章

随机推荐