【发布时间】:2021-12-06 09:21:38
【问题描述】:
维基百科是这样解释“分段错误”的:
当程序尝试访问内存时会发生分段错误 不允许访问的位置,或尝试访问 以不允许的方式存储位置(例如,尝试 写入只读位置,或覆盖部分 操作系统)。
那么,程序执行者在运行时知道程序试图访问的内存是否真的被允许访问的机制是什么?
【问题讨论】:
标签: segmentation-fault memory-access
维基百科是这样解释“分段错误”的:
当程序尝试访问内存时会发生分段错误 不允许访问的位置,或尝试访问 以不允许的方式存储位置(例如,尝试 写入只读位置,或覆盖部分 操作系统)。
那么,程序执行者在运行时知道程序试图访问的内存是否真的被允许访问的机制是什么?
【问题讨论】:
标签: segmentation-fault memory-access
简短的回答是您的程序使用的地址(以及运行程序的进程使用的地址)不是“真正的”内存地址。相反,在您和由虚拟内存和分页提供的物理内存地址之间存在一个抽象层。
此外,您的程序被分成具有不同目的的“段”,这些段通常位于不同的页面上。例如,为单个函数调用分配的局部变量位于堆栈上,而通过“malloc”获得的内存位于堆上。
【讨论】: