私は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) が入力されると、実際には「Enter a Number:」の出力が開始され、おそらく 1000000000000 回、「十分なメモリがありません」という出力が期待されました。これはチェックの「else」部分にあるため、なぜこれが起こっているのですか? 比較がうまくいっていないと思いました。どんな助けでも大歓迎です。ありがとう。