Programming/Linux_Platform
signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr
decdream
2017. 1. 23. 14:59
참고 URL :
일반적으로 point 변수에 잘못된 값이 들어가 있을 경우는 null point exception 이나 다른 error 가 발생할 것이지만,
변수 자체가 invalid address alignment error 가 발생했다는 것은, 다른 수행에 의해서 변수 값 영역이 침범당했음을 의미한다.
아래 아티클의 작성자는 원인을 찾지 못했지만,
아마 원인은 아래 (1) 을 수행할때 f_value3 영역이 침범당했기 때문일 것이다.
int main( int argc, char *argv[]) { t_curr_value curr_value; get_float_value( &curr_value.f_value3); // <--- 정상 실행 return 0; }
int main( int argc, char *argv[]) { t_curr_value curr_value; get_float_value( &curr_value.f_value1); // - (1) get_float_value( &curr_value.f_value3); // <--- Bus error!! return 0;
}
static void get_float_value( float *p_value){ char str[] = "9999.999"; *p_value = atof( str); // <-- 에러가 발생하는 위치 }