我正在尝试通过很多步骤使用 5 维数组。我收到一个错误:''std::bad_alloc''
Posted
技术标签:
【中文标题】我正在尝试通过很多步骤使用 5 维数组。我收到一个错误:\'\'std::bad_alloc\'\'【英文标题】:I am trying to work with 5 Dimensional arrays with a lot of steps. I get an error: ' 'std::bad_alloc' '我正在尝试通过很多步骤使用 5 维数组。我收到一个错误:''std::bad_alloc'' 【发布时间】:2019-05-24 15:40:21 【问题描述】:我正在解决一个需要 5 维数组(动态分配)且步数至少为 1000 的问题。代码可以正常运行 50 步。同时,它给出了一个错误,即在抛出“std::bad_alloc”的实例后调用终止 什么():std::bad_alloc 中止(核心转储) ' 当步数增加时。有什么建议吗?
【问题讨论】:
您似乎内存不足,如std::bad_alloc
所示。
感谢您的回复。是的。我确实明白了。但是,有什么出路呢?
【参考方案1】:
我正要写另一条评论,但是太长了......
您要求解决 std::bad_alloc,我可以考虑两种选择:
购买更多内存 ;-) 停止分配这么多内存鉴于此,但您没有提供任何代码,并且不清楚您对“步骤”的含义,我将假设“步骤”是每个一维数组的大小。
现在,考虑一个一维(标准)数组。大小为 50 的 char 数组在内存中需要 50 个连续字节。
对于二维数组,所需内存为 50^50: 2500 字节。
对于 3 维数组,所需内存为 50^3: 125 KB。
对于一个五维数组,您需要 50^5 (312500000) 个字节,大约 300 MB(不一定是连续的,因为您通常使用嵌套的 for loop
分配每个子数组)。
如果数组的长度是 1000 而不是 50,则所需的内存将是 1000^5(右侧有 15 个零的 1)字节,几乎是 PB!
这就是你内存不足的原因。
【讨论】:
以上是关于我正在尝试通过很多步骤使用 5 维数组。我收到一个错误:''std::bad_alloc''的主要内容,如果未能解决你的问题,请参考以下文章