gpt4 book ai didi

c - argv[1] 出现段错误

转载 作者:行者123 更新时间:2023-11-30 19:49:16 27 4
gpt4 key购买 nike

所以我有一个程序,它接受用户的命令行参数并使用 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。

最佳答案

你的atoi声明在哪里? ?没有#include <stdlib.h> ,我假设没有。

您可能还想确保 argc > 1在使用 argv[1] 之前。

关于c - argv[1] 出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14972095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com