c++ - 错误:arma::memory::acquire():Armadillo 内存不足

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

当我尝试将 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/

相关文章:

python - 在python中查找二进制矩阵的零空间

c++ - std::unordered_map - 如何随时获取 "track"最大/最小键

c++ - 为什么 C++ 模板参数应该声明为类类型?

c++ - 旋转时照明的 GL_POINT_SPRITE_ARB(广告牌)问题

c++ - "Invalid pointer dequeued from free list",malloc_error_break 中的断点没有帮助

c++ - 动态内存分配在调试时似乎是即时的,但在 Release模式下是渐进的

ios - MPMoviePlayerController 已发布,但内存使用率仍然很高

c++ - 不良顶点数据的常见陷阱/原因?

python - Numpy:如何找到矩阵 A 中子矩阵的唯一局部最小值?

c++ - 在使用矩阵进行计算时删除 C++ 二维 vector 行