#include <iostream>
using namespace std;
int main()
{
unsigned long maxindex = 2147483647ul+2ul;
char* p = new char[maxindex];
for(int i = 0; i < maxindex; i++)
{
p[i] = 65;
}
cout<<"Value at index "<<maxindex-1<<" is "<<p[maxindex-1]<<endl;
delete[] p;
return 0;
}
我正在使用4GB內存的Windows 64位上運行此程序。當我開始運行程序時,內存爲0.99GB,內存使用量高達3.07GB,程序停止響應,我被要求關閉程序。Windows無法分配內存並停止程序?
如果我將2ul
改爲unsigned long maxindex = 2147483647ul+2ul;
改爲1ul
,內存使用量將上升至2.98GB,程序將成功運行。
這是怎麼發生的?它只是分配一個char元素。
也打印'i'的值?確保它是你的想法。 –