GCC和Clang在同一代码上给出不同的结果

问题描述 投票:0回答:1

所以我最近开始使用Linux在C语言中进行编码,而我正在使用gcc编译器。我最近开始使用Pointers。所以我写了一个简单的C程序来习惯使用指针。我编写了下面提到的代码,并使用gcc对其进行了编译,并得到了错误(“总线错误:10”),然后我尝试使用clang编译完全相同的代码,并且该代码起作用了。我猜有一些我不遵循的特定gcc规则,这就是为什么我得到此错误。我想知道为什么会发生这种情况,以及将来如何避免犯类似类型的错误。

#include <stdio.h>

int main(void)
{
  int *address;
  *address=10;

  printf("%d\n", *address);
  return 0;
}
c gcc memory clang point
1个回答
0
投票

您的指针未分配有效地址,它尚未初始化,并且可以具有任何值。取消引用它具有不确定的行为。因此,它在两个不同的编译器中具有不同的行为这一事实不足为奇。您真的不能期望程序触发未定义的行为。

© www.soinside.com 2019 - 2024. All rights reserved.