c++ - 创建返回出口 11 的大型一维矩阵
问题描述
我编写了一些使用一维数组来表示矩阵的代码。我目前正在测试大输入尺寸。
当我设置rows
并cols
以50000
代码 11 退出程序时。
我试着打印了很多。
double* create_matrix_1d(int n_rows, int n_cols) {
long long len = (long long ) n_rows * (long long) n_cols;
auto* A = new double[len];
int row, col ;
for(row = 0; row < n_rows; row++) {
for( col = 0; col < n_cols; col++) {
int i = col + row * n_cols;
A[i] = 1; //static_cast <int> (rand()) % 10 ;
}
}
return A;
}
解决方案
让我们计算所需的内存。双精度通常使用 8 个字节,因此您的矩阵需要:
50000*50000*8 = 20000000000 bytes
记忆的
20000000000 bytes = 20000000000 / 1024 = 19531250 kb
19531250 / 1024 = 19073 Mb
19073 / 1024 = 18.6265 Gb
因此,除非您的计算机具有超过 19 Gb 的 RAM,否则出现内存不足错误是正常的
推荐阅读
- node.js - Discord.js 向特定频道发送消息
- python - 如何获取请求的主机名?
- docker - 当我使用启动时,Docker 容器进入兴奋状态。为什么?
- filesystems - 快速插入和拔出 USB 时 GetVolumeInformationW 卡住
- python - TypeError:无效的类型提升
- javascript - 将 connect-redux-shorthand 符号转换为 JS/TypeScript
- angular - 验证具有默认值的文本框
- reactjs - React Formik + 是的,onChange 触摸领域
- javascript - 如何从 NodeJs 启动和停止 Electron 应用程序
- google-drive-api - 在 Google Drive API 中使用 createdTime 属性调用 Agument 列表文件 API