그래서 사용자가 명령 줄 인수를 사용하고 atoi를 사용하여 숫자로 변환하는 프로그램이 있습니다. 나는 다음과 같이 출력이 다른 값에 대한 프로그램을 실행하면세그먼트 오류가있는 argv [1]
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;
}
: 명령 줄에서 전달 된 번호가 여기보다 2048
있는 간단한 프로그램입니다 때까지 모두 잘 작동합니다 :
[adeb1][open-19][~/pre2] ./pre2 210
[adeb1][open-19][~/pre2]
내가하려고 흥미롭게 경우 : 값이 작은
[adeb1][open-19][~/pre2] ./pre2 2098
Segmentation fault
Atoi를 사용하지 않고 % s를 가진 printf 나는 여전히 argv [1]와 함께 segmentation fault를 얻는다. 그래서 argv [1]는 2048보다 높은 값으로 문제를 일으키는 것 같습니다.
저는 리눅스에서 gcc를 사용하고 있습니다.
여기에 no_of_elements_per_thread를 게시하지 않은 곳을 신고 하시겠습니까? –
['strtol'] (http://www.kernel.org/doc/man-pages/online/pages/man3/strtol.3.html) ['atoi'] (http : //www.kernel .org/doc/man-pages/online/pages/man3/atoi.3.html). –
인쇄물이있는 한'argc' ** 처음 ** (자체 printf())에 인쇄하십시오. – WhozCraig