«memory-alignment» 태그된 질문

8
메모리 정렬의 목적
분명히 나는 ​​그것을 얻지 못한다. 길이가 1 바이트 인 메모리 워드가있는 메모리가 있다고 가정하십시오. 정렬 된 주소의 경우와 같이 정렬되지 않은 주소 (즉 4로 나눌 수 없음)의 단일 메모리 액세스에서 4 바이트 길이 변수에 액세스 할 수없는 이유는 무엇입니까?

16
커스텀 C ++ 할당 자의 매력적인 예?
std::allocator커스텀 솔루션을 선호하는 좋은 이유는 무엇입니까 ? 정확성, 성능, 확장 성 등에 절대적으로 필요한 모든 상황에서 실행 했습니까? 정말 영리한 예가 있습니까? 사용자 지정 할당자는 항상 필요하지 않은 표준 라이브러리의 기능이었습니다. 나는 여기에있는 누군가가 그들의 존재를 정당화하기위한 매력적인 예를 제공 할 수 있는지 궁금합니다.

4
구조체 정렬이 필드 유형이 기본인지 사용자 정의인지에 따라 달라지는 이유는 무엇입니까?
에서 노다 시간 V2, 우리는 나노초 해상도로 이동하고 있습니다. 이는 우리가 관심있는 전체 시간 범위를 나타 내기 위해 더 이상 8 바이트 정수를 사용할 수 없음을 의미합니다. 이로 인해 Noda Time의 (많은) 구조체의 메모리 사용량을 조사하게되었고 결과적으로 저를 이끌었습니다. CLR의 정렬 결정에서 약간의 이상한 점을 발견했습니다. 첫째, 나는 이것이 실현 …

4
스택 변수가 GCC __attribute __ ((aligned (x)))에 의해 정렬됩니까?
다음 코드가 있습니다. #include <stdio.h> int main(void) { float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0}; printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]); } 그리고 다음과 같은 출력이 있습니다. 0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac 의 주소 a[0]가의 배수가 아닌 이유는 무엇 0x1000입니까? 정확히 무엇입니까 __attribute__((aligned(x)))? 이 설명을 오해 했습니까? gcc …

4
메모리 정렬 : alignof / alignas를 사용하는 방법?
저는 지금 공유 메모리로 작업합니다. 나는 이해할 수 없다 alignof하고 alignas. cppreference 가 명확하지 않습니다. alignof"alignment"를 반환하지만 "alignment"는 무엇입니까? 정렬 할 다음 블록을 위해 추가 할 바이트 수? 패딩 사이즈? 스택 오버플로 / 블로그 항목도 명확하지 않습니다. 사람이 명확하게 설명 할 수 alignof와 alignas?

2
argc와 argv의 주소가 12 바이트 인 이유는 무엇입니까?
내 컴퓨터 (Linux를 실행하는 64 비트 Intel)에서 다음 프로그램을 실행했습니다. #include <stdio.h> void test(int argc, char **argv) { printf("[test] Argc Pointer: %p\n", &argc); printf("[test] Argv Pointer: %p\n", &argv); } int main(int argc, char **argv) { printf("Argc Pointer: %p\n", &argc); printf("Argv Pointer: %p\n", &argv); printf("Size of &argc: %lu\n", sizeof (&argc)); printf("Size …

1
std :: vector를 만드는 현대적인 접근 방식으로 정렬 된 메모리 할당
다음과 같은 질문은 답변이 오래된 그러나, 관련 및 사용자의 코멘트 마크 Glisse은 충분히 논의되지 않을 수 있습니다이 문제에 대한 17 ++ C 이후 새로운 접근 방식이 있습니다 제안합니다. SIMD에 대해 정렬 된 메모리가 올바르게 작동하면서 여전히 모든 데이터에 액세스하려고합니다. Intel에서 유형의 float 벡터를 만들고 __m256크기를 8 배 줄이면 정렬 된 …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.