【发布时间】:2012-11-19 18:02:41
【问题描述】:
std::stack 的大小是否有限制?
我使用 std::stack<std::pair<int,std::string>> 作为我的堆栈,当条目数超过大约 100 万时,我收到运行时错误。
这是因为std::stack的大小限制吗?
【问题讨论】:
-
运行时错误有很多可能的原因。发布您的代码。
-
@erosenin:看起来更像是您分配的堆栈
long缓冲区是原因;特别是考虑到你给它的大小是一百万。自动存储(“堆栈”)的典型实现限制在 1MB(Windows)到 8MB(Linux,大多数 Unix)的范围内。假设long在这个平台上是 8 字节,100 万 * 8 字节 = 8MB,这几乎超过了大多数 Unix 的限制。在自动存储中使用动态内存分配而不是数组。