4
struct Test {
void doAction() {}
};
// Create and save into a void*
void *ptr = new Test;
// Real use through a Test*
Test *t = static_cast<Test *>(ptr);
t->doAction();
// Delete
delete static_cast<Test *>(ptr);
ptr은 객체의 주소를 저장하는 데에만 사용되며 주소는 객체의 실제 유형으로 역 참조 만됩니다.엄격한 앨리어싱 규칙으로 확인 하시겠습니까?
관계가없는 유형으로 역 참조되지 않으면 엄격한 별칭 규칙이 적용됩니까?
-fstrict-aliasing을 사용하여 GCC를 사용하여 컴파일 –
예, 올바른 유형으로 변환한다는 것을 알고있는 한 괜찮습니다. 제쳐두고, C++ 코드가 C 코드와 상호 작용하는 많은 장소 (주로 비동기 콜백)에서이 작업을 수행 할 수 있습니다. – Arunmu