C语言题目:不要62--
发布网友
发布时间:2022-12-11 13:52
我来回答
共3个回答
热心网友
时间:2023-06-22 08:29
定义数组 int array[1000000]; 栈溢出了,
要么这里改成少分配一些,如int array[100000],要么就采用malloc(C语言)或者new(C++)进行动态分配
一般一个进程的栈空间是2M,堆空间按照32位机器上是4G,所以你定义那么大的int型数组肯定直接溢出,可以算一下:
一个int占4字节,如果定义数组的话,那么2M/4=500K,当然进程启动本身就要很多东西要入栈,所以比500K要小。这里理论上定义int array[500000];但是实际上 还有其他的程序数据要入栈,所以不可能分配到这么多空间。
如果是动态分配出来的话,按照4G/4=1G,理论上应该比1G小点,即理论上动态分配大小为1000000000, 再大就堆溢出了。
热心网友
时间:2023-06-22 08:29
利用shell命令,你可以查一下
热心网友
时间:2023-06-22 08:30
题目不清,无解