Universidad de Magallanes

Research


Direction of Research


facebook twitter youtube
02 de August del 2019

posix_memalign 예제

posix_memalign() 함수는 자문 정보 옵션의 일부이며 모든 구현에서 제공할 필요는 없습니다. posix_memalign()은 일부 공간을 할당하려고 시도해야 하며, 할당이 성공하면 0이 반환되고 할당된 공간에 대한 포인터가 memptr에 반환됩니다. 응용 프로그램은 포인터가 개체에 액세스하는 데 사용되지 않도록 해야 합니다. 위의 예와 같이 오프셋 크기를 포함하여 주소를 정렬합니다. 포인터가 이미 정렬된 최상의 시나리오에서도 이 API를 일반적인 방식으로 처리해야 합니다. 오프셋 스토리지는 항상 필요합니다. 그것을 구축하려면, 단순히 최상위 수준에서 확인을 실행, 또는 예제 / c / 실행 메이크 또는 malloc_aligned합니다. posix_memalign이 이식 가능한지 여부에 대한 주요 우려가 있으며 linux 빌드에 대한 memalign의 사용은 대체의 이점을 보기 위해 모호하고 매우 좁은 경우로 간주됩니다. 마이클과 필과 상의한 후 거절당할 것을 제안받았다. [CX] free() 함수는 posix_memalign()에 의해 이전에 할당된 메모리를 할당 해제해야 합니다. 또한 posix_memalign은 포인터 대신 오류 코드를 반환합니다(이제 는 인수입니다).

시스템 기능에 대한 오류 코드에 대한 일반적인 Charm++ 철학에 대해 잘 모르겠습니다. CMK_DEBUG 플래그에서 오류 검사를 래핑해야 합니까 (또는 이와 유사한 것, 기본값이 무엇인지 확실하지 않으며 이것은 단지 추측일 뿐입니다)? 거기에 디버기 물건이 많이 있고 분명히 샘플 코드가 있지만 내가 하고 싶은 일을하는 방법에 대한 괜찮은 예제를 찾기 위해 고군분투했기 때문에 (내 자신의 기억을 할당) 그래서 잘하면이 어떤 사람들을 도울 것입니다. posix_memalign()는 성공 시 0을 반환하거나 실패시 다음 섹션에 나열된 오류 값 중 하나를 반환합니다. errno는 설정되지 않았습니다. posix_memalign() 함수는 정렬로 지정된 경계에 정렬된 크기 바이트를 할당하고 memptr에 할당된 메모리에 대한 포인터를 반환해야 합니다. 정렬 값은 두 배의 sizeof(void *)의 힘이어야 합니다. posix_memalign()는 공간을 할당하려고 시도하지 않아야 하며, 이 경우 구현 정의 오류 번호가 반환되거나 memptr에 반환된 null 포인터와 함께 0이 반환되거나 많은 시스템에서 정렬 제한이 있습니다. 예를 들어 직접 블록 장치 I/O에 사용되는 버퍼에서 POSIX는 필요한 정렬을 알려주는 pathconf(path,_PC_REC_XFER_ALIGN) 호출을 지정합니다. 이제 posix_memalign()을 사용하여 이 요구 사항을 충족할 수 있습니다. “구현에 의해 지원되는” 요구 사항의 예로 POSIX 함수 posix_memalign은 두 개의 힘과 sizeof(void *)의 배수인 모든 정렬을 허용하며, aligned_alloc의 POSIX 기반 구현은 이 요구 사항을 상속합니다. 다음 예제에서는 응용 프로그램이 posix_memalign()을 호출하기 전에 * memptr을 null 포인터로 설정하여 오류에 대한 일관된 동작을 얻을 수 있는 방법을 보여 주었습니다. 성공적으로 완료되면 posix_memalign()은 0을 반환합니다.

그렇지 않으면 오류를 나타내기 위해 오류 번호가 반환되어야 하며 memptr의 내용은 수정되지 않은 상태로 두거나 null 포인터로 설정해야 합니다. POSIX는 posix_memalign()에서 얻은 메모리를 free(3)를 사용하여 해제할 수 있어야 합니다. 일부 시스템은 memalign() 또는 valloc()으로 할당된 메모리를 회수할 수 있는 방법을 제공하지 않습니다(malloc(3)에서 가져온 포인터를 free(3)로만 전달할 수 있기 때문에 예를 들어 memalign()은 malloc(3)을 호출한 다음 얻은 값을 정렬합니다.

inicio atrás arriba

HIGHLIGHTS

  • LINKS


  • Dirección de Investigación

    Investigación • Avenida Bulnes 01890 • Punta Arenas • Chile
    Teléfono: +56 61 2 209 397 • Email: dir.investigacion@umag.cl