cfree(3)

освобождает выделенную память · man3 · Русский

cfree(3) Library Functions Manual cfree(3)

cfree - освобождает выделенную память

Standard C library (libc, -lc)

#include <stdlib.h>
/* в SunOS 4 */
int cfree(void *ptr);
/* в glibc или FreeBSD libcompat */
void cfree(void *ptr);
/* In SCO OpenServer */
void cfree(char ptr[.size * .num], unsigned int num, unsigned int size);
/* In Solaris watchmalloc.so.1 */
void cfree(void ptr[.elsize * .nelem], size_t nelem, size_t elsize);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

cfree():

начиная с glibc 2.19:
        _DEFAULT_SOURCE
    в glibc 2.19 и старее:
        _BSD_SOURCE || _SVID_SOURCE

This function should never be used. Use free(3)EN instead. Starting with glibc 2.26, it has been removed from glibc.

В glibc функция cfree() является синонимом free(3)EN, которая "добавлена для совместимости с SunOS".

В других системах есть другие функции с таким же именем. Объявление функции приводится иногда в <stdlib.h>, а иногда <malloc.h>.

В некоторых версиях SCO и Solaris есть версии malloc с cfree() с тремя аргументами, по аналогии с calloc(3)EN.

Если она нужна вам при переносе чего-либо, добавьте


#define cfree(p, n, s) free((p))

в свой файл.

Часто задается вопрос: "Могу ли я использовать free(3)EN для освобождения памяти, выделенной с помощью calloc(3)EN, или нужно использовать cfree()?" Ответ: используйте free(3)EN.

В руководстве SCO написано: "Функция cfree доступна для соответствия стандарту iBCSe2, она просто вызывает free. Аргументы num и size функцией cfree не используются".

Версия cfree() из SunOS (которая является синонимом free(3)EN) возвращает 1 в случае успеха и 0 - в случае ошибки. В случае ошибки errno устанавливается в значение EINVAL: значение ptr не является указателем на блок, ранее выделенным с помощью одной из функций из семейства malloc(3)EN.

The cfree() function was removed in glibc 2.26.

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
cfree() Безвредность в нитях MT-Safe /* в glibc */

Версия cfree() с тремя аргументами, используемая в SCO, соответствует стандарту iBCSe2, Intel386 Binary Compatibility Specification, Edition 2.

malloc(3)EN

Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

5 февраля 2023 г. Linux man-pages 6.03