stdlib.h — заголовочный файлстандартной библиотеки языка Си, который содержит в себе функции, занимающиеся выделением памяти, контролем процесса выполнения программы, преобразованием типов и другие. Заголовок вполне совместим с C++ и известен в нём как cstdlib. Название «stdlib» расшифровывается как «standard library» (стандартная библиотека).
Функции
NULL
Заголовочные файлы stdlib.h и stddef.h определяют макросNULL, являющийся константным нуль-указателем, который гарантированно указывает на некорректный адрес памяти.
Варианты
NULL может быть определен как константное выражение, равное целому нулевому числу (нулю), длинному целому нулю, или нуль приводится к указателю типа void *:
#define NULL 0#define NULL 0L#define NULL ((void *) 0)Несмотря на то, что константа нуль-указателя всегда представляется в Си символьной константой 0 или 0, приведённым к void-указателю, реальное битовое представление подобного указателя зависит от системы и может содержать однобитовые значения.
Типы
size_t
Заголовочные файлы stdlib.h и stddef.h определяют тип данных, называемый size_t[2], который используется для представления размера объекта. Библиотечные функции, использующие размеры, принимают на вход значения именно этого типа. Значения типа size_t возвращает оператор sizeof.
Настоящий тип size_t платформо-независим; распространенной ошибкой является подразумевать под size_t беззнаковое целое (unsigned int), что может привести к ошибкам программирования,[3] причём в первую очередь это касается 64-битных архитектур.
div_t, ldiv_t
Также определены два менее широко используемых типа данных — div_t и ldiv_t. Они являются возвращаемыми типами функций div и ldiv. Стандарт определяет их следующим образом:
typedef struct { int quot, rem;} div_t;typedef struct { long int quot, rem;} ldiv_t;Нестандартные функции
itoa
itoa — общая функция, входящая во множество реализаций stdlib.h, но не определяемая стандартом. Возможно, её так часто включают в библиотеки благодаря её описанию в книге «Язык программирования Си». Аналогичного эффекта можно добиться при помощи функции sprintf, которая определена в стандарте.
См. также
Примечания
- ↑ 12C++ Resources Network — stdlib.hАрхивная копия от 7 января 2010 на Wayback Machine проверено 2009 12 15
- ↑Согласно стандарту ISO/IEC 9899 C99, Глава 7.20 General utilities
(point number 2) и Приложение B.19 General utilities . Определение может также содержаться в stddef.h, если кто-то захочет избежать подключения всей stdlib. - ↑20 issues of porting C++ code on the 64-bit platformАрхивировано 4 января 2010 года.
Ссылки
- Список функций stdlib.h на сайте cplusplus.com (англ.)
- Why size_t matters (недоступная ссылка) (англ.)
- Стандартные Вспомогательные Функции (stdlib.h) (рус.)
- Функции библиотеки stdlib.h (рус.)