Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我认为只需将两者放在不同的段中,就可以防止堆栈和堆冲突。有什么理由不以这种方式实施吗?
编译器生成符合操作系统 ABI 的代码。因此编译器的内存模型实际上遵循操作系统的内存模型。如果您询问的是 Linux、*BSD 或其他具有重叠代码/数据/堆栈段的平面 VA 的操作系统,那么以这种方式进行编程会更容易,并且极大地简化了内存管理。能够防止堆堆栈冲突对于操作系统在内存管理的易用性方面将失去的好处太小了(管理一个扁平的 VA 已经足够复杂了)。
看看 OS/2 发生了什么——它确实在保护模式下使用了完全分段...