簡體   English   中英

64位AMD64模式下的分段錯誤

[英]Segmentation fault in 64-bit AMD64 mode

我試圖理解以下悖論:

我正在64位Linux上運行程序。 因此該程序以64位模式(AMD64長模式的子模式)運行,對嗎? 但是這種模式沒有分段,只有分頁。 那為什么下面的代碼會產生分段錯誤?

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

無論底層的分頁技術如何,都將其稱為分段錯誤。 這意味着(通常)您已嘗試在允許的范圍(您的段)之外訪問內存,它可能被稱為塊,塊,節,memlim,xyzzy,plugh或其他任何術語。

盡管實際上在語言中沒有“指針”,但實際上與在Java中獲得空指針異常時的情況一樣::)

在UNIX(SIGSEGV)中表明這一點的信號早於英特爾為我們提供了原始x86芯片的分段架構之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM