The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

memalign (3)
  • >> memalign (3) ( Русские man: Библиотечные вызовы )
  • memalign (3) ( Linux man: Библиотечные вызовы )
  •  

    НАЗВАНИЕ

    posix_memalign, memalign, valloc - распределение выровненной памяти  

    СИНТАКСИС

    #include <stdlib.h>
    
    int posix_memalign(void **memptr, size_t alignment, size_t size);
    void *memalign(size_t boundary, size_t size);
    void *valloc(size_t size);
    
     

    ОПИСАНИЕ

    Функция posix_memalign() распределяет size байтов и помещает адрес распределенной памяти в *memptr. Адрес распеределенной памяти будет кратен alignment, который должен быть степенью числа 2 и быть кратным sizeof(void *).

    Устаревшая функция memalign() размещает size байтов и возвращает указатель на распределенную память. Адрес памяти будет кратен boundary, который должен быть степенью числа 2.

    Устаревшая функция valloc() размещает size байтов и возвращает указатель на распределенную память. Адрес памяти будет кратен размеру страницы. Эквивалентно memalign(sysconf(_SC_PAGESIZE),size).

    Для всех этих трех процедур мамять не будет заполнена нулями.

     

    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

    memalign() и valloc() возвращают указатель на размещенную память, или NULL если запрос выдал ошибку.

    posix_memalign() возвращает ноль при нормальном завершении работы или, при ошибке, одно из значений, перечисленных в следующем разделе. Заметим, что errno при этом не определяется.

     

    НАЙДЕННЫЕ ОШИБКИ

    EINVAL
    Параметр alignment не равен степени числа 2 или не кратен sizeof(void *).
    ENOMEM
    Недостаточно памяти для выполнения запроса на размещение.

     

    ЗАМЕЧАНИЯ

    posix_memalign() проверяет, чтобы alignment соответствовало всем требованиям, указанным выше. memalign() может не проверять корректность параметра boundary.

    POSIX требует, чтобы память, полученная от posix_memalign() была высвобождена через free(). Некоторые системы не обеспечивают метода исправления памяти, выделенной с помощью memalign() или valloc() (так как можно передать free() указатель, полученный из malloc(), в то время как memalign() будет вызывать malloc() и только затем выравнивать полученное значение). GNU libc позвволяет памяти, полученной через любую из этих процедур, быть исправленной с помощью free().

    malloc() для GNU libc всегда возвращает 8-байтовый выровненный адрес памяти, так что эти процедуры требуются только если вам нужны большие выровненные значения.

     

    ДОСТУПНОСТЬ

    Функции memalign() и valloc() доступны в Linux во всех библиотеках libc. Функция posix_memalign() доступна, начиная с glibc 2.1.91.

     

    СООТВЕТСТВИЕ СТАНДАРТАМ

    Функция valloc() появилась в 3.0 BSD. Она указана, как устаревшая, в BSD 4.3, и как стандартная, в SUSv2. Этого уже нет в SUSv3. Функция memalign() появиляется в SunOS 4.1.3 но не в BSD 4.4. Функция posix_memalign() пришла из POSIX 1003.1d.  

    СМ. ТАКЖЕ

    malloc(3), free(3), getpagesize(2), brk(2)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    ЗАМЕЧАНИЯ
    ДОСТУПНОСТЬ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру