참고 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); // <-- 에러가 발생하는 위치 }
'Programming > Linux_Platform' 카테고리의 다른 글
SetUID / SetGID Special File Permissions (0) | 2017.11.22 |
---|---|
The result of getmntent() function (0) | 2017.09.12 |
makedev (0) | 2016.10.31 |
파일의 속성을 check 하는 코드 - fstatat, fstat, stat, lstat (0) | 2016.10.31 |
find PID as process name and send signal using shell script (0) | 2016.10.06 |