Kha*_*ury 5 memory ram operating-system memory-management memory-address
为什么保留内存地址0x0,为什么?我无法理解究竟是什么,谢谢你的帮助
它主要是一个约定,并且是特定于实现的。
C 语言标准(C99 或 C11)以及其他一些编程语言(例如 Lisp)具有不能取消引用的空指针的概念(这将是未定义的行为、分段错误)并且不同于任何其他指针(指向某些有效的指针)。内存位置)。Tony Hoare 谦虚地称这个概念为“我的十亿美元错误”,并且某些语言(Haskell、Ocaml)有一些标记的联合类型(例如'a option
在 Ocaml 中)。
大多数实现(但不是全部)通过地址 0 表示空指针。
实际上,在台式机、笔记本电脑或平板电脑上,用户模式 C 程序在某些虚拟地址空间中运行,其中包含地址 0 的页面未映射。(在某些 Linux 上,您也许可以使用地址 0进行 mmap(2)MAP_FIXED
,但这会很糟糕......)
理论上(以及过去),地址可能比数字更复杂...(在 20 世纪 80 年代,例如i286上的x86 内存分段、iAPX432寻址、Rekursiv架构等...)
阅读一些有关 C 编程、微处理器体系结构和指令集、操作系统原理、虚拟内存、MMU的书籍和网页。