所以我有一个程序,它接受用户的命令行参数并使用 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 而不使用 atoi 来执行 printf,我仍然会遇到 argv[1] 的分段错误。因此,似乎 argv[1] 的值高于 2048 时出现问题。
如果这很重要,我在 linux 中使用 gcc。