C++17 Dynamic memory allocation for over-aligned data
1. Dynamic memory allocation
for over-aligned data
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0035r4.html
2. 제목 번역
C++ 11 에 alignas 키워드가 추가 됨
이 alignas로 설정한 크기가 __STDCPP_DEFAULT_NEW_ALIGNMENT__ 를 넘는
클래스를 동적할당 할 경우 프로그래머가 기대한 대로 동작하지 않는 문제가
있었다고 함
__STDCPP_DEFAULT_NEW_ALIGNMENT__ : 컴퓨터마다 다르니 확인 필요
회사 컴은 8. 집 컴은 16
4. 새로운 new, delete 추가
알아서 오버로딩 되기 때문에
코드 사용법이 변경되지는
않는다
align 사이즈가
__STDCPP_DEFAULT_NEW_
ALIGNMENT__ 를 넘으면
operator new(sizeof(T),
std::align_val_t(alignof(T)))
이렇게 변환이 되어서
오버로딩되는 거 같음...
https://en.cppreference.com/w/cpp/language/new
https://en.cppreference.com/w/cpp/memory/new/operato
r_new
5. Visual Studio
VS 2017 에서 부터 사용가능
옛날 버전에는 /Zc:alignedNew 키워드를 사용해야 해당 기능을 사용할 수 있었으나
최신 버전에서는 기본으로 포함되어 있음
https://learn.microsoft.com/ko-kr/cpp/build/reference/zc-alignednew?view=msvc-170