当我尝试将 10516x66 矩阵乘以 66x10516(矩阵的转置)时,我遇到了标题中描述的错误。结果应该是一个 10516x10516 矩阵,当然我从来没有实现过。也许我的推理有缺陷,但因为我的矩阵是 Mat<double>
每个 double 为 8 个字节,结果应为 10516*10516*8 = 884690048 字节 = 0.88469 GB。我的机器是带有 8 Gb RAM 的 Windows,我运行的是 32 位 minGW 编译器。知道发生这种情况的原因以及如何解决这个问题吗?
最佳答案
在 Windows 上的 64 位主机下运行的 32 位程序最多可以使用 4Gb 的内存。为此,您必须在链接期间使用特殊选项/LARGEADDRESSAWARE。
链接:https://msdn.microsoft.com/en-us/library/wz223b1z(VS.80).aspx
很可能,您的进程被限制为 2Gb,并且在分配时内存不足或连续内存不足。迁移到 4Gb 可能会很快解决问题
更新
看起来等效的 mingw32 链接器选项是 --large-address-aware
关于c++ - 错误:arma::memory::acquire():Armadillo 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35133722/