64位AMD64模式下的分段错误

时间:2014-10-31 20:42:06

标签: c segmentation-fault 64-bit

我试图理解以下悖论:

我在64位Linux中运行程序。所以程序以64位模式运行(AMD64长模式的子模式),对吧? 但是这种模式没有分段,只有分页。那么为什么下面的代码会产生分段错误呢?

int main() {
  int* ptr = (int*)0xABCDABCDABCD;
  *ptr = 10;
  return 0;
}

1 个答案:

答案 0 :(得分:3)

它的称为分段错误,与底层的分页技术无关。这意味着(通常)你试图访问你允许的范围之外的内存(你的片段),它可能被称为块,块,节,memlim,xyzzy,plugh或任何术语真的。

与Java中的null 指针异常相同,尽管事实上没有"指针"在语言中: - )

在UNIX(SIGSEGV)中指示它的信号早在英特尔为我们提供原始x86芯片的分段架构之前就已存在。