gpt4 book ai didi

pointers - 空指针定义在计算机的哪一层?

转载 作者:行者123 更新时间:2023-12-05 00:04:49 29 4
gpt4 key购买 nike

原始计算机基本上只有物理地址从 0 开始的内存,对吗?然后有人可以编写汇编代码(例如 BIOS)并将值实际设置为 0。

现在,如果有启动计算机的 BIOS,那么有人可以为操作系统编写加载程序。那个人可以决定用汇编语言将实际值移动到内存中的位置 0 吗?

如果他们使用 C 或 C++ 呢?他们可以有一个值为 0 的指针并使用它来访问第一个内存位置吗?这是否需要经过特殊调整的编译器?

然后操作系统进入现场。它有一个由 malloc 调用的内存管理器。以获得更多内存。是否可以编写一个操作系统,它可以简单地将空指针用作普通指针,但在其他方面的行为与 Linux 完全一样,然后如果有人使用普通的、未修改的 GCC 编译 C 程序,空指针就不会导致分段过错?

最佳答案

而 NULL 指针在 C 源代码中表示为 0 ,并不要求底层位模式实际上必须为 0。它只需要与非 NULL 指针区分开即可。有一些架构的例子在幕后不是零。

C 实现本身决定了 NULL 是什么。

您还应该意识到现代操作系统(好吧,那些使用虚拟内存的操作系统)在进程虚拟地址空间和底层物理内存之间存在脱节。

关于pointers - 空指针定义在计算机的哪一层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5283113/

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