gpt4 book ai didi

memory - 为什么要保留内存地址 0x0,为什么要保留?

转载 作者:行者123 更新时间:2023-12-02 11:53:04 28 4
gpt4 key购买 nike

为什么要保留内存地址 0x0,为什么要保留?我无法理解到底是什么,谢谢您的帮助

最佳答案

它主要是一个约定,并且是特定于实现的。

C 语言标准(C99 或 C11)以及其他一些编程语言(例如 Lisp)具有 null pointer 的概念。它不能被取消引用(即 undefined behaviorsegmentation fault ),并且与任何其他指针(指向某个有效的内存位置)不同。托尼·霍尔谦虚地称这个概念为"my billion dollar mistake" ,某些语言(Haskell、Ocaml)有一些 tagged unions类型(例如 Ocaml 中的 'a option)。

大多数实现(但不是全部)通过地址 0 表示空指针。

实际上,在台式机、笔记本电脑或平板电脑上,用户模式 ​​C 程序在某些 virtual address space 中运行。其中包含地址 0 的页未映射。 (在某些 Linux 上,您也许可以将 mmap(2)MAP_FIXED 地址 0 一起使用,但这会很糟糕...)

在一些嵌入microcontrollers (例如 AVR ),可以使用地址 0。

理论上(以及过去),地址可能比数字更复杂......(在 20 世纪 80 年代,例如 x86 memory segmentation 上的 i286iAPX432 寻址、 Rekursiv 架构等。 ..)

阅读几本有关 C 编程、微处理器体系结构的书籍和网页 & instruction sets , operating system原则,virtual memory , MMU s。

关于memory - 为什么要保留内存地址 0x0,为什么要保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34739117/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com