gpt4 book ai didi

c - 声明一个指向内存中地址 0x200 处的整数的指针

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

我有几个疑问,我记得有些地方我无法手动将变量放在内存中的特定位置,但后来我遇到了这段代码

#include<stdio.h>
void main()
{
int *x;
x=0x200;
printf("Number is %lu",x); // Checkpoint1
scanf("%d",x);
printf("%d",*x);
}

是我们不能把它放在一个特定的位置,还是我们不应该把它放在一个特定的位置,因为我们不知道它是否是一个有效的位置?

此外,在此代码中,直到第一个检查点,我的输出为 512。
然后在那段故障之后。

有人可以解释为什么吗? 0x200 不是有效的内存位置吗?

最佳答案

在一般情况下 - 您将获得的行为未定义 ——一切皆有可能。

例如,在 linux 中,前 1GB 是为内核保留的,因此如果您尝试访问它 - 您将收到段错误,因为您试图在用户模式下访问内核内存。

不知道它在 Windows 中是如何工作的。

Reference for linux claim :

Currently the 32 bit x86 architecture is the most popular type of computer. In this architecture, traditionally the Linux kernel has split the 4GB of virtual memory address space into 3GB for user programs and 1GB for the kernel.

关于c - 声明一个指向内存中地址 0x200 处的整数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13001704/

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