argv的分段错误[1]

时间:2013-02-20 04:03:07

标签: c segmentation-fault

所以我有一个程序从用户获取命令行参数并使用atoi将其转换为数字。一切正常,直到从命令行传递的数字超过2048。

这是一个简单的程序:

 int no_of_elements_per_thread = 0; 

 int main(int argc, char* argv[])
 {  
   int status;
   void* thread_arg;    
   void* res;   
   int i = 0;

//initialize
   no_of_elements_per_thread = atoi(argv[1]);
 return 0;
}

当我为不同的值运行程序时,输出如下:

  [adeb1][open-19][~/pre2] ./pre2 2098
   Segmentation fault

值较小的值:

[adeb1][open-19][~/pre2] ./pre2 210

[adeb1][open-19][~/pre2] 

有趣的是,如果我尝试使用%s进行printf而不进行atoi,我仍然会使用argv [1]来获得分段错误。所以似乎argv [1]给出了高于2048的值的问题。

如果重要的话,我在linux中使用gcc。

1 个答案:

答案 0 :(得分:0)

您对atoi的声明在哪里?没有#include <stdlib.h>,我认为没有。{/ p>

在使用argv [1]之前,您可能还需要确保argc > 1