【发布时间】:2019-01-15 11:19:58
【问题描述】:
我在实验室系统(使用 Windows)上用 C 语言解决了这个简单的问题。我使用 DevC++ 编写了这段代码,它在 DevC++ 上运行,但我无法在我的 Mac 系统上编译相同的代码。
代码:
#include<stdio.h>
#include<stdlib.h>
int* oddSwap(int x, int y)
{
int temp = x;
x = y * 5;
y = temp * 5;
int *k;
*k=x+y;
return k;
}
int main()
{
int x=5;
int y=3;
int *k=oddSwap(x,y);
printf("\n%d", *k);
return 0;
}
这在 Windows (DevC++) 上运行,但我在 macOS (macOS 10.14.2) 上运行时收到此错误消息。
Bus error: 10
【问题讨论】:
-
将内存分配给
int *k。int *k; *k=x+y;你有UB。 -
你有一个指针
k,但是它指向哪里?是时候了解undefined behavior了。 -
标志“-Wall”或“-Wuninitialized”对于这些问题非常有用。