Поделиться через


malloc

Выбирает блоки памяти.

void *malloc(
   size_t size 
);

Параметры

  • size
    Байты.

Возвращаемое значение

malloc возвращает пустой указатель на выделенную область или NULL если недостаточно памяти.Вернуть указатель на тип, отличный от voidиспользуйте приведение типов в возвращаемом значении.Гарантируется подходяще выравниваются объем памяти, заданный к возвращаемому значению для хранения любого типа объекта.Если размер 0 malloc выбирает элемент в нулевой длины куче и возвращает допустимый указатель к данному элементу.Всегда проверяйте вернуться из mallocдаже в том случае, если объем памяти мал запрошенного.

Заметки

malloc функция выделяет блок памяти по крайней мере size байты.Блок может быть больше size байты из-за необходимого места для выравнивания и обслуживания.

malloc наборы errno В ENOMEM, если выделение памяти завершается неудачей или, если объем памяти превышает требуемый _HEAP_MAXREQ.Дополнительные сведения об этом и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlist и _sys_nerr.

Код использует запуска malloc выбор хранилища _environ" envpи argv переменные.Следующие функции и их аналоги расширенных символов также называется malloc.

calloc

fscanf

_getw

setvbuf

функции _exec

fseek

_popen

функции _spawn

fgetc

fsetpos

printf

_strdup

_fgetchar

_fullpath

putc

Система

fgets

fwrite

putchar

_tempnam

fprintf

getc

_putenv

ungetc

fputc

getchar

помещает

vfprintf

_fputchar

_getcwd

_putw

vprintf

fputs

_getdcwd

scanf

 

fread

возвращает

_searchenv

 

C++ _set_new_mode функция задает режим обработки для нового malloc.Новый режим ядра, указывающее, является ли при ошибке malloc новая процедура вызова обработчика в виде набора by _set_new_handler.По умолчанию malloc не вызывает новую процедуру обработчика при сбое выделить память.Можно переопределить используемую по умолчанию функциональности, что, когда malloc не удалось выделить память. malloc вызывает новую процедуру обработчика тем же способом, new оператор делает, если он завершается ошибкой для этой же причине.Переопределить значения по умолчанию, вызов

_set_new_mode(1)

в начале программу или ссылка со NEWMODE.OBJ (см. Параметры соединения).

При связывании с отладочной версией библиотеки времени выполнения c malloc позволяет к _malloc_dbg.Дополнительные сведения об управляемой куче во время процесса отладки см. в разделах Куча отладки для CRT.

malloc помечает __declspec(noalias) и __declspec(restrict), чтобы гарантированно изменяет функция глобальные переменные и присвоен псевдоним возвращенный указатель.Дополнительные сведения см. в разделе noalias и ограничьте.

Требования

Процедура

Обязательный заголовок

malloc

<stdlib.h> и <malloc.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Библиотеки

Все версии Библиотеки времени выполнения C.

Пример

// crt_malloc.c
// This program allocates memory with
// malloc, then frees the memory with free.
 

#include <stdlib.h>   // For _MAX_PATH definition
#include <stdio.h>
#include <malloc.h>

int main( void )
{
   char *string;

   // Allocate space for a path name
   string = malloc( _MAX_PATH );

   // In a C++ file, explicitly cast malloc's return.  For example, 
   // string = (char *)malloc( _MAX_PATH );

   if( string == NULL )
      printf( "Insufficient memory available\n" );
   else
   {
      printf( "Memory space allocated for path name\n" );
      free( string );
      printf( "Memory freed\n" );
   }
}
  

Эквивалент в .NET Framework

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Выделение памяти

calloc

free

realloc