dereferencing type-punned pointer will break strict-aliasing rules 경고와 관련해 질문이 있습니다
글쓴이: i20749 / 작성시간: 월, 2013/08/05 - 11:13오전
안녕하세요. 개발 중에 dereferencing type-punned pointer will break strict-aliasing rules 경고와
관련해 궁금한 점이 있습니다. 영어로된 검색 내용은 봐도 이해가 잘 안되서요. 선배님들의 가르침 부탁드리겠습니다.
소스는 다음과 같습니다.
void my_free(void **ptr)
{
if (*ptr != NULL) {
free(*ptr);
*ptr = NULL;
}
}
int main()
{
char *ptr;
ptr = malloc(10);
my_free((void **) &ptr);
}
컴파일 옵션은 다음과 같구요.
g++ -O2 -Wall -o test test.c
현재 centos 6.0 x86에서는 아무 경고도 나오지 않는데요, centos 5.7 x64에서는
dereferencing type-punned pointer will break strict-aliasing rules 경고가 나타나고 있습니다.
centos 5.7 x64에서 -O2 옵션을 제거하면 나타나지 않구요.
위 경고를 무시하면 안될거 같은데 예제 소스가 무엇때문에 문제가 있는지 잘 이해가 되지 않습니다.
Forums:
댓글 달기