gpt4 book ai didi

c - 在 C 中初始化地址为零的变量

转载 作者:可可西里 更新时间:2023-11-01 10:56:15 25 4
gpt4 key购买 nike

这可能是一个非常基本的问题。我知道有一个 C 约定将空指针的值设置为零。您是否有可能在 Windows 中为新变量分配空间,而分配空间的地址恰好为零?如果不是,通常占用该地址区域的是什么?

最佳答案

在 MS-DOS 上,空指针是一个相当有效的指针,并且由于操作系统在 real mode 中运行实际上有可能用垃圾覆盖 0x0 地址并破坏内核。你可以这样做:

int i;
unsigned char* ptr = (unsigned char *)0x0;
for(i = 0; i < 1024; i++)
ptr[i] = 0x0;

现代操作系统(例如 Linux、Windows)在 protected mode 中运行它永远不会让您直接访问物理内存。

处理器将map the physical addresses to virtual addresses你的程序将使用。

它还会跟踪您访问的内容,如果您敢触摸不属于您的东西,您会遇到麻烦(您的程序会 segfault )。这绝对包括尝试取消引用 0x0 地址。

关于c - 在 C 中初始化地址为零的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462299/

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