Aliasing
aliasing이란 동일한 메모리 주소가 서로 다른 이름으로 접근이 가능한 상태를 말한다. 예를 들어 두 포인터가 동일한 메모리를 가리킬 때 두 포인터는 서로의 alias pointer가 된다.
추가로 'strict aliasing' 이란 컴파일러에서 쓰는 option에 관해 짧게 언급하면, '컴파일러는 서로 다른 타입의 변수는 동일한 메모리를 가리키지 않는다'라고 가정을 하는 것을 말한다. 이 </code>-fstrict-aliasing<code>은 gcc 에서는 default로 되어있다. 이 검사를 하지 않게 하려면, -fno-strict-option
이다. 이와 관련된 warning option은 -Wstrict-aliasing
이긴 한데, 이렇게 해서 warning이 나오지 않았다고 해서 모든 aliasing문제가 없어질 거라고 안심해서는 않된다고 한다. 가능하면 -fstrict-aliasing
option을 이용하여 aliasing 현상에 주의를 기울이도록 하자.
-fstrict-aliasing
옵션은 컴파일러에게 aliasing현상은 없을거라고 가정하게 하기 때문에, optimization에도 이득을 가질 수 있다.
See also
Favorite site
References
-
Gcc_fno_strict_aliasing_option.pdf ↩