아무리 고쳐봐도 RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow) 런타임 오류가 자꾸 나오는데 어디서 잘못된건지를 확인할수가 없어요;;
잘못된 메모리접근인가 해서 봤지만 배열이 크기 이상으로 넘어가도록 하지 않았는데, stack overflow 일 경우는 어떤 경우인가요?? 지금 생각으로는 다중 for문을 형성하게 되어 stack의 용량을 넘어서게 되어 이런 문제가 발생하는 것 같은데 맞는건가요?
문제를 푼 방법은 바이트별로 따로 변수에 저장해서 시프트연산을 거치고 순서를 바꿔 합치는 방법으로 했습니다.
도와주세요 형님들, ㅠㅠ
#include <stdio.h>
int main(void){
int i=0,j=0;
char shift_index;
unsigned int byte_buff[4]={0,};
unsigned int result=0;
unsigned int a[10]={0,};
int num;
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;
}
return 0;
}
wogkr3654
아무리 고쳐봐도 RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow) 런타임 오류가 자꾸 나오는데 어디서 잘못된건지를 확인할수가 없어요;;
잘못된 메모리접근인가 해서 봤지만 배열이 크기 이상으로 넘어가도록 하지 않았는데, stack overflow 일 경우는 어떤 경우인가요?? 지금 생각으로는 다중 for문을 형성하게 되어 stack의 용량을 넘어서게 되어 이런 문제가 발생하는 것 같은데 맞는건가요?
문제를 푼 방법은 바이트별로 따로 변수에 저장해서 시프트연산을 거치고 순서를 바꿔 합치는 방법으로 했습니다.
도와주세요 형님들, ㅠㅠ
10년 전