我得到一个非常奇怪的错误,我完全绝望,因为它对我没有任何意义。所以考虑这个方案:在Windows上很简单的程序的分割错误
#include <iostream>
using namespace std;
int main(void) {
int M, N;
cin >> M;
cin >> N;
cout << "Danke" << endl;
int *d;
d[0] = 2;
int a[2][3];
a[1][2] = 3;
cout << a[1][2] << endl;
return 0;
}
这工作得很好。不过,如果我使用完全相同的代码具有以下部分删除:
int a[2][3];
a[1][2] = 3;
cout << a[1][2] << endl;
...当我用Windows命令行我的Windows应用程序崩溃启动它,并使用Cygwin,我得到一个“分段错误”错误!我有一个Windows 7 64位计算机,并使用DevCpp进行编译(即使在这两种情况下,g ++都会给出分割错误,但我想这是因为它不会自动将程序转换为具有WinMain - 函数,所以不同的问题)。
任何人都可以帮忙吗?
*“这工作得很好”* - 我不同意。 'd [0] = 2;'<===未定义的行为。 'd'是不确定的。 – WhozCraig
@WhozCraig当然“未定义的行为”可能意味着*看起来*工作正常。这也可能意味着[恶魔从你的鼻子飞出](http://www.catb.org/jargon/html/N/nasal-demons.html)。 –
IIRC,GCC将零初始化变量,这会使得它每次都会发生段错误(因为您正在取消引用空指针)。 –