【发布时间】:2012-07-21 19:15:08
【问题描述】:
进程的虚拟地址空间以进程的text、data 和bss 段开头。放置此堆分配后,堆会向更大的内存地址增长。但是,在使用堆的一部分之前,必须分配内存块(valloc 等),否则会发生(或应该发生)segfault。
堆栈从虚拟地址空间中的初始大地址向更小的值增长。据我所知,这无需虚拟内存分配即可工作。如果在堆的情况下这是不可能的,如何在没有事先分配内存的情况下使用堆栈? (它是相同的线性虚拟地址空间。)
据我所知alloca 的实现方式与sub esp, <size> 相同。但是堆栈使用的虚拟地址空间区域必须在此之前以某种方式分配,对吧?
【问题讨论】: