【发布时间】:2014-10-31 20:42:06
【问题描述】:
我试图理解以下悖论:
我在 64 位 Linux 中运行程序。所以程序运行在 64 位模式(AMD64 长模式的子模式),对吧? 但是这种模式没有分段,只有分页。那为什么下面的代码会产生分段错误呢?
int main() {
int* ptr = (int*)0xABCDABCDABCD;
*ptr = 10;
return 0;
}
【问题讨论】:
-
此地址可能位于标记为只读的页面中。因此尝试通过以下方式更改该页面中的任何内容: *ptr = 10;将引发故障,通常是 seg 故障。
标签: c segmentation-fault 64-bit