我在具有 4GB 内存的 Ubuntu 上运行以下 c++ 代码
const long long nSize = 400000000;
double Array1[nSize];
for(int i=0; i<nSize; i++)
Array1[i]= 2*2; // store on the stack
这适合 RAM(我的电脑不会抱怨)。令人困惑... htop 说在运行时几乎没有使用任何额外的 RAM... 为什么?(我通常让它休眠 100 秒以防它需要更新)
另一方面,如果我动态分配巨大的数组(像这样的教程建议我应该这样做) - htop 告诉我它正在使用大部分 RAM(如果不是全部并且它崩溃):
double *pnArray2 = new double[nSize];
for(int i=0; i<nSize; i++)
pnArray2[i] = 2*2; // store on the heap
那么为什么我应该使用堆来存储大数据结构......如果(就像在这个例子中)堆栈可以处理更大的数组?
我认为堆应该比堆栈大!请告诉我我哪里错了。