与atoi的Valgrind错误

时间:2015-01-28 04:59:04

标签: c valgrind

我正在研究这个项目,当我在这行代码上运行valgrind时

  int numPointers;
  numPointers = atoi(argv[NUM_POINTERS_VALUE]);

我收到了

的valgrind错误
  

无效读取大小1 [PID:8979]   地址0x0未堆叠,malloc'd或(最近)释放

我想知道这里发生了什么以及是否有办法解决它

1 个答案:

答案 0 :(得分:2)

使用命令行参数时,最好使用

   int main()
   { 
     if(argc != <required number of argument>)
     {
       printf("Fewer arguments in the input\n");
       return 1;
     }
     // Do your stuff
   }

稍后

if(argc[1] != NULL)
numPointers = atoi(argv[1]);

因为atoi(NULL)会导致导致崩溃的未定义行为。