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
3.
std::align_val_t
new, delete 오버로딩 함수를 추가하기 위한 키워드 선언
https://en.cppreference.com/w/cpp/memory/new/align_val_t
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
Parece que tem um bloqueador de anúncios ativo. Ao listar o SlideShare no seu bloqueador de anúncios, está a apoiar a nossa comunidade de criadores de conteúdo.
Odeia anúncios?
Atualizámos a nossa política de privacidade.
Atualizámos a nossa política de privacidade de modo a estarmos em conformidade com os regulamentos de privacidade em constante mutação a nível mundial e para lhe fornecer uma visão sobre as formas limitadas de utilização dos seus dados.
Pode ler os detalhes abaixo. Ao aceitar, está a concordar com a política de privacidade atualizada.