아무리 고쳐봐도 RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow) 런타임 오류가 자꾸 나오는데 어디서 잘못된건지를 확인할수가 없어요;;
잘못된 메모리접근인가 해서 봤지만 배열이 크기 이상으로 넘어가도록 하지 않았는데, stack overflow 일 경우는 어떤 경우인가요?? 지금 생각으로는 다중 for문을 형성하게 되어 stack의 용량을 넘어서게 되어 이런 문제가 발생하는 것 같은데 맞는건가요?
문제를 푼 방법은 바이트별로 따로 변수에 저장해서 시프트연산을 거치고 순서를 바꿔 합치는 방법으로 했습니다.
도와주세요 형님들, ㅠㅠ
#include <stdio.h>intmain(void){inti=0,j=0;charshift_index;unsignedintbyte_buff[4]={0,};unsignedintresult=0;unsignedinta[10]={0,};intnum;for(i=0;i<4;i++)//각 바이트마다 따올 수 있도록 변수 만듬{byte_buff[i]=(0x000000ff<<(i*8));}do//몇개의숫자를 적을 것인지, {scanf("%u",&num);}while(num<1&&num>10);i=0;while(i<num)// 각 숫자 입력{scanf("%u",&a[i]);i++;}printf("\n");for(j=0;j<num;j++)//endian change{for(i=0;i<4;i++){result|=(((a[j]&byte_buff[i])>>i*8)&byte_buff[0])<<((3-i)*8);}printf("%u\n",result);result=0;}return0;}
wogkr3654
아무리 고쳐봐도 RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow) 런타임 오류가 자꾸 나오는데 어디서 잘못된건지를 확인할수가 없어요;;
잘못된 메모리접근인가 해서 봤지만 배열이 크기 이상으로 넘어가도록 하지 않았는데, stack overflow 일 경우는 어떤 경우인가요?? 지금 생각으로는 다중 for문을 형성하게 되어 stack의 용량을 넘어서게 되어 이런 문제가 발생하는 것 같은데 맞는건가요?
문제를 푼 방법은 바이트별로 따로 변수에 저장해서 시프트연산을 거치고 순서를 바꿔 합치는 방법으로 했습니다.
도와주세요 형님들, ㅠㅠ
9년 전