为什么我的命令行参数处理会导致我的程序崩溃?

时间:2013-04-13 23:19:45

标签: c++ command-line-arguments argv

为什么看起来如此简单的事情会让我的程序崩溃?

我正在尝试获取n的值,以使数组的大小为N并对其执行各种操作,但这不是重点。无论如何,每次我尝试访问argv[1]时都会崩溃。

int main(int argc, char * argv[])
{
  int n;
  n = atoi(argv[1]); //Crashes here!
  cout << "\nN: " << n << endl;
}

1 个答案:

答案 0 :(得分:1)

argv [1]是否存在?为了防止代码访问内存,它不应该检查传递了多少个参数。

if(argc >= 2)
  n = argv[1];
else
  std::cout << "Proper usage: .....\n";

这似乎是学习如何使用调试器查看argv和argc内容的好时机。