C++判断题:某人想把一个几兆大小的文件数据调入内存,考虑到会导致栈溢出,因此不应该使用局部数组,而
答案:3 悬赏:60 手机版
解决时间 2021-01-24 05:14
- 提问者网友:留有余香
- 2021-01-23 18:04
C++判断题:某人想把一个几兆大小的文件数据调入内存,考虑到会导致栈溢出,因此不应该使用局部数组,而
最佳答案
- 五星知识达人网友:佘樂
- 2021-01-23 18:59
局部数组的空间是在栈上分配的,栈上的空间是有限的,因此不建议在使用局部数组。
全局变量空间是在全局数据区分配的,在程序启动时会给全局变量和静态变量分配空间,一直到程序结果,如果这些空间在整个程序运行期间内从未使用,就显示浪费掉了。
在堆上分配空间,可以随时分配随时使用,使用完毕释放即可,不用担心不够用,通常操作系统会在内存紧张时,会把一些内存交换到磁盘上,缓解内存紧张,待到使用时,再从磁盘上交换到内存中,这些操作是对用户透明的,用可以像使用普通内存一样。
全局变量空间是在全局数据区分配的,在程序启动时会给全局变量和静态变量分配空间,一直到程序结果,如果这些空间在整个程序运行期间内从未使用,就显示浪费掉了。
在堆上分配空间,可以随时分配随时使用,使用完毕释放即可,不用担心不够用,通常操作系统会在内存紧张时,会把一些内存交换到磁盘上,缓解内存紧张,待到使用时,再从磁盘上交换到内存中,这些操作是对用户透明的,用可以像使用普通内存一样。
全部回答
- 1楼网友:街头电车
- 2021-01-23 20:21
这话是对的。追问求详细一点的解释,比如放在堆里就不用考虑溢出的问题了吗追答堆的容量更大。溢出是不能绝对避免的。
- 2楼网友:患得患失的劫
- 2021-01-23 19:30
函数调用栈的空间是有限的,大概就几兆。全局变量是在数据区,这里没有几兆的限制。如果在堆上面分配也行,但是要注意释放内存。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯