【发布时间】:2021-09-26 13:25:16
【问题描述】:
我很惊讶为什么我的编译器允许我使用硬编码的指针地址?为什么它不崩溃?根据我的理解,逻辑地址是编译器选择的。
main()
{
int *p;
p = 10; // why it is allowed? Ideally, it should be int a; p = &a;
printf("%u", p);
}
【问题讨论】:
-
在具有虚拟内存的系统上没有多大意义,但在具有内存映射 IO 的硬件系统上确实有意义。
-
您应该会收到来自编译器的警告。见stackoverflow.com/a/8288548
-
进行分配不是问题,但使用它可能会。试试
p=10; *p = 1;