【发布时间】:2019-06-24 02:08:29
【问题描述】:
我有一个关于整数指针的动态内存分配的查询。
int main()
{
int *a;
*a = 5;
printf("value = %d\n", *a);
return 0;
}
根据我的理解,上述代码应该返回分段错误,这发生在我的电脑(Ubuntu 32 位)中。
但是同一段代码,在我的 MacOS 和 Fedora Linux 系统上执行时,输出为“value = 5”。任何想法,为什么这段代码在这两个系统上工作,即使我没有为整数指针分配内存?
【问题讨论】:
-
“未定义行为”与“分段错误”不同。
-
好吧,既然代码中没有动态分配或其他分配,不清楚为什么这个问题是关于“动态内存分配”的。
-
“代码应该返回分段错误”,就像说如果你在测试中作弊你应该被抓住。也许你会,也许你不会。如果您需要一种语言来告诉您代码何时被骗,请考虑使用其他语言。 C 根本不需要这样做。
标签: c dynamic-memory-allocation