刚接触C++也没从头学,下面代码当输入9位5时发生错误,什么原因?达人请详说解惑。
int 输入数, 位 = 0;
cout << "输入任意整数不超过指定 Int 范围位数:" << endl;
cin >> 输入数; int *动态 = new int[输入数];
do
{
动态[位] = 输入数 % 10;
输入数 /= 10;
位++;
} while (输入数 > 0);
printf("输入数为: %d位\n", 位);
for (int 序 = 位 - 1; 序 >= 0; 序--)
printf("%d ", 动态[序]);
printf("\n");

------解决方案--------------------
数组太大了,555555555甚至都超过了int能表示的最大数值。int最大才21亿多一点。
------解决方案--------------------
123456789正好小于21亿。
(一个32bit数,包括最高符号,最大表示到2的31次方-1)近似21亿。
找一本中学电脑课教材自学下吧。
------解决方案--------------------
555555555*4/1024/1024/1024=2.0696
都超过2G了,申请内存失败
------解决方案--------------------
这是很正常 的事情,不要以为你机器有很大的内存,系统就可以给你分配很大的内存。要知道new 这些函数分配的内存必须是连续分布的,系统一般情况下不会有那么大的连续内存块。一般能分配个500MB的内存就算很幸运了。
------解决方案--------------------
说实话,给你分析到这种程度还不懂,真没法再说了。