【发布时间】:2014-12-06 02:34:31
【问题描述】:
当我通过 gcc(g++)/Cygwin 编译和运行这个程序时,它会编译并按预期运行。
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
for (int arg = 1; arg <= argc; arg++)
{
cout << argv[arg] << endl;
}
return 0;
}
但是,在使用 Visual Studio 13 进行编译时,程序可以编译,但在执行时我遇到了访问冲突。什么给了?
demo.exe 中 0x000B5781 处未处理的异常:0xC0000005:访问冲突读取位置 0x00000000。
【问题讨论】:
-
arg <= argc因此,如果您有 1 个参数 (argc = 1),您将得到arg = 1和1 <= 1,然后继续执行argv[1],这是...中的第二个论据。此外,Visual Studio 似乎可以很好地编译代码,事实证明......它编译并且您运行了程序。 -
是的,我应该换种说法。
标签: visual-c++ access-violation argv