错误:arma :: memory :: acquire():Armadillo的内存不足

时间:2016-02-01 15:01:14

标签: c++ memory matrix out-of-memory armadillo

当我尝试将10516x66矩阵乘以66x10516(通过其转置的矩阵)时,我遇到了标题中描述的错误。结果应该是10516x10516矩阵,当然我从来没有实现过。也许我的推理是有缺陷的,但由于我的矩阵是Mat<double>并且每个双精度是8个字节,结果应该是10516 * 10516 * 8 = 884690048字节= 0.88469 GB。我的机器是带有8 Gb RAM的Windows,我运行的是32位minGW编译器。任何想法,这是怎么回事,以及如何克服这个问题?

1 个答案:

答案 0 :(得分:0)

在Windows上运行在64位主机下的32位程序最多可以使用4Gb的内存。为此,您必须在链接期间使用特殊选项/ LARGEADDRESSAWARE。

链接:https://msdn.microsoft.com/en-us/library/wz223b1z(VS.80).aspx

最有可能的是,您的进程限制为2Gb,在分配时,内存不足或连续内存不足。转向4Gb可能会很快解决问题

更新

看起来等效的mingw32链接器选项是--large-address-aware