本文共 658 字,大约阅读时间需要 2 分钟。
栈大小不够用不是容易出现溢出吗?
| |
是为了阻止不靠谱的程序员进入这个行业。 当然,真正的原因其实是栈的地址空间必须连续,如果任其任意成长,会给内存管理带来困难。对于多线程程序来说,每个线程都必须分配一个栈,因此没办法让默认值太大。 当然可能有人会说64位系统上这个不是问题,但大家反正已经用了32位系统这么多年(只有4GB甚至2GB地址空间是可以给用户用的),已经习惯了,而且现代化的内存分配器通过类似slab allocator这样的设计已经尽可能令相关数据尽可能放在一起,从CPU数据缓存角度,绝大多数程序并不需要在栈上分配内存(题外话:栈缓冲区溢出的后果比堆缓冲区溢出要严重许多,而在堆上分配缓冲区则可以避免前者)。 |
semiconductor 写到: |
64位系统上这个不是问题,64位系统下的状况是什么样的? |
引用: |
堆栈地址最大值×线程数目最大值<用户态内存地址最大值 |
转载地址:http://ptcrn.baihongyu.com/