矩阵中的错误分配 C++ 加载文件

bad alloc c++ loading file in matrix

我尝试加载一个大文件 (20gb) 并将其加载到矩阵中。但是,当它尝试将文件加载到矩阵中时,出现 bad_alloc 错误。我的代码适用于 Mac 但不适用于 Linux。

这是我的代码:

std::ifstream ifs(filename, std::ifstream::binary);

loadModel(ifs);

void loadModel(std::istream& in) {
     input_ = std::make_shared<Matrix>();
     input_->load(in); // bad_alloc
}

bad alloc表示内存分配时出错。可能您的矩阵不适合可用的操作内存。

您可以使用 free 命令检查可用内存

$ free
              total        used        free      shared  buff/cache   available
Mem:       32780268     2055964    29109172      193300     1615132    30106808
Swap:        999420           0      999420

在此输出中,它表明有 29GB 可用。