我认为只需将两者放在不同的段中就可以防止堆栈和堆冲突。有没有这样的原因?
答案 0 :(得分:0)
编译器生成符合操作系统ABI的代码。因此,编译器的存储器模型实际上遵循操作系统的存储器模型。如果您询问Linux,* BSD或其他具有平坦VA且具有重叠代码/数据/堆栈段的操作系统,则以这种方式编程更容易,并且它极大地简化了内存管理。能够防止堆栈冲突对于操作系统在内存管理的易用性方面的松散而言是太小的收获(管理平坦的VA已经足够复杂了)。
看看OS / 2发生了什么 - 它确实在保护模式下使用完全分段......