The OpenNET Project / Index page

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

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

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

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

    НАЗВАНИЕ

    alloca - функция распределения памяти  

    СИНТАКСИС

    #include <alloca.h>

    void *alloca(size_t size);  

    ОПИСАНИЕ

    Функция alloca выделяет size байтов памяти в стеке. Это временное хранилище данных автоматически освобождается после возврата функции, вызвавшей alloca к своему владельцу.  

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

    Функция alloca возвращает указатель на начало выделенной памяти. Если распределение памяти привело к переполнению стека, то дальнейшее поведение программы не определено.

     

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

    Совершенно очевидно, что функция alloca существует в 32v, pwb, pwb.2, 3bsd и 4bsd. Об этом существует соответствующая страница руководства в BSD версии 4.3. В Linux используется версия GNU. Эта функция не регламентируется стандартами POSIX или SUSv3.

     

    ЗАМЕЧАНИЯ К ВЕРСИИ GNU

    Обычно gcc переводит вызовы к alloca построчно. Этого не делается, если были указаны опции -ansi или -fno-builtin. Но будьте осторожны! По умолчанию версия glibc <stdlib.h> включает <alloca.h> и поэтому содержит строку
    # define alloca(size) __builtin_alloca (size)
    что приводит к множеству неприятных последствий, если у кого-то есть своя версия этой функции.

    Тот факт, что код рассматривается построчно, означает, что будет невозможно получить адрес этой функции или изменить ее поведение через подключение другой, "своей" библиотеки.

    Построчный код часто содержит одиночные инструкции, корректирующие указатель стека и не проверяющие переполнение стека. Поэтому никогда не сможет возвратится пустая ошибка NULL.

     

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

    Функция alloca зависит от машины и компилятора. Во многих системах ее реализация проблематична и содержит много ошибок. Ее использование очень несерьезно и не одобряется.

    Во многих системах alloca не может быть использована в листе аргументов вызова функции, так как пространство под стек, зарезервированное alloca появится в середине стека для аргументов функций.  

    СМ. ТАКЖЕ

    brk(2), pagesize(2), calloc(3), malloc(3), realloc(3)


     

    Index

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


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




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

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