今天我遇到了一个有趣的问题,处理大型数据结构。我最初使用一个向量来存储超过1000000的整数但后来决定我实际上并不需要向量的动态功能(无论如何我一直保留1000000个点),相反,它将是有益的。能够在数据结构中的任何位置添加值。所以我把它切换到一个数组并且 BAM 堆栈溢出。我猜这是因为在编译时声明数组的大小会将其放入堆栈并使用动态向量而不是将其放在堆上(我猜测它更大?)。
那么这里的答案是正确的?回到动态内存系统只是为了把它放到堆上?增加堆栈的大小?或者我在这里基于整个事情......
谢谢!
答案 0 :(得分:4)
我最初使用向量来存储超过1000000的整数
好主意。
但后来决定我实际上并不需要矢量的动态功能(无论如何我一直保留1000000个点)
不是一个好主意。你确实需要它。
而且,能够在数据结构中的任何位置添加值都是有益的。
我不跟随。
我猜这是因为在编译时声明数组的大小会将其放入堆栈并使用动态向量而不是将其放在堆上(我猜测它更大?)。
得多。默认情况下,调用堆栈的大小通常为1MB-2MB。你的“堆”(免费商店)只受你可用内存的限制。
那么这里的答案是正确的?回到动态内存系统只是为了把它放到堆上?
是
[编辑:约阿希姆的权利 - static
是另一个可能的答案。]
增加堆栈的大小?
你可以,但即使你可以伸出4MB,你也没有为其他本地数据变量留下空间。最好使用动态内存 - 这是适当的事情。
或者我在这里基于整个事情......
没有