2
malloc을 사용하면 어떻게 될까요? (또는 새로운 것입니다. 대부분의 구현에서 malloc으로 구현되고 malloc에 대해 표준이 정렬에 대해 말하는 것과 가장 높은 스칼라 정렬) 정렬 요구 사항이 시스템의 최대 정렬 요구 사항보다 높게 설정된 유형 (alignof(std::max_align_t)
)? 그래서 뭔가 같은메모리 정렬이 최대 정렬보다 높습니다. alignas malloc
alignas(alignof(std::max_align_t) + alignof(int)) struct Something {
...
};
하자'필요한 정렬을 나타내는 n'을 다음과 같이
그런 다음 당신은 안전하게 구조를 할당 할 수 있습니다 . 'malloc'을'n + sizeof (struct Something)'로 호출 한 다음'malloc'에 의해 반환 된 값에서 시작하여 정렬 된 주소를 찾으십시오. '[retVal, retVal + n-1]'사이에 유효한 주소를 찾을 수 있습니다. 그런 다음이를 구조의 기본 주소로 사용하십시오. –
@barakmanos 그건 영리한 해킹 롤, 거기에 도서관 솔루션이 무엇입니까? C가 최대 스칼라 요구 사항보다 높은 정렬 요구 사항이 없었기 때문에 걱정할 필요가 없다고 생각합니다. – Curious
모든 공급 업체는 지원되는 플랫폼 (컴파일러 + 기본 HW 아키텍처)에 적합한 malloc을 제공해야한다고 생각합니다. –