我对 C++ 还很陌生,所以请耐心等待。
我有以下程序来了解动态内存分配。
#include<iostream>
#include<new>
using namespace std;
int main ()
{
int i,n;
int * p;
cout << "How many numbers would you like to enter? ";
cin >> i;
p = new (nothrow) int [i];
if (NULL == p){
cout << "Not enough memory!";
}else{
for (n=0; n<i; n++){
cout << "Enter a number: ";
cin >> p[n];
}
cout << "You have entered: ";
for(n=0; n<i; n++){
cout << p[n] << ", ";
}
delete[] p;
}
return 0;
}
只要最初输入合理的数量,程序就会按预期运行。但是当输入一个巨大的数字(1000000000000)时,我预计输出“内存不足”,而实际上它开始打印“输入一个数字:”大概是 1000000000000 次,显然我还没有等待输出。既然这是在检查的“其他”部分,为什么会发生这种情况?我猜这个比较是行不通的。任何帮助表示赞赏。谢谢。