Aracılığıyla paylaş


malloc

Bellek bloklarını ayırır.

void *malloc(
   size_t size 
);

Parametreler

  • size
    Ayrılacak bayt.

Dönüş Değeri

mallociçin ayrılan alan void bir işaretçi döndürür veya NULL , bellek yetersiz. Bir işaretçi farklı bir türü dönmek için void, dönüş değerini artığını türü kullanın. Dönüş değerine göre sıralanmasını depolama alanı herhangi bir nesne türünü depolanması için yeterince hizalı sağlanır. Boyutu 0 ' dır, malloc sıfır uzunluklu öğe yığınındaki ayırır ve bu madde için geçerli bir işaretçi döndürür. Her zaman dönüş kontrol malloc, istenen bellek miktarını küçük olsa bile.

Notlar

malloc İşlevi ayırdığı bir bellek bloğunun en az size bayt. Blok büyük size hizalama ve Bakım bilgileri için gereken alan nedeniyle bayt.

mallocayarlar errno için ENOMEM bir bellek ayırma başarısız olursa veya bellek miktarını aşarsa isteniyorsa _HEAP_MAXREQ. Bu ve diğer hata kodları hakkında daha fazla bilgi için bkz: errno, _doserrno, _sys_errlist ve _sys_nerr.

Başlatma kodunu kullanan malloc için depolama alanı ayırmak için _environ, envp, ve argv değişkenleri. Aşağıdaki işlevler ve geniş karakterli karşılıkları da çağrı malloc:

calloc

fscanf

_getw

setvbuf

_exec işlevleri

fseek

_popen

_spawn işlevleri

fgetc

fsetpos

printf

_strdup

_fgetchar

_fullpath

putc

sistem

fgets

fwrite

putchar

_tempnam

fprintf

getc

_putenv

ungetc

fputc

getchar

koyar

vfprintf

_fputchar

_getcwd

_putw

vprintf

fputs

_getdcwd

scanf

 

fread

alır

_searchenv

 

C++ _set_new_mode işlevi yeni işleyicisi modunu ayarlar malloc. Yeni işleyicisi modu gösterir mi, başarısızlık, malloc tarafından belirlenen yeni işleyici yordamı çağırmak için ise _set_new_handler. Varsayılan olarak, malloc yeni bir işleyici yordamı bellek ayırma hatası çağırmaz. Bu varsayılan davranışı geçersiz kılmak böylece, malloc bellek ayırma işlemi malloc aynı şekilde yeni bir işleyici yordamı çağırır bu yolla new operatörü mü aynı nedenle başarısız olduğunda. Varsayılan geçersiz kılmak için çağrı

_set_new_mode(1)

program veya bağlantı newmode ile erken.OBJ (see Bağlantı seçenekleri).

Uygulama hata ayıklama sürümü c çalışma zamanı kitaplıkları ile bağlandığında malloc çözümler _malloc_dbg. Yığın hata ayıklama işlemi sırasında nasıl yönetildiği hakkında daha fazla bilgi için Hata ayıklama crt öbek.

mallocişaretlenmiş __declspec(noalias) ve __declspec(restrict), işlev genel değişkenleri değiştirmek için garantili ve işaretçiyi verdiğini başka ad verilmiş değil. Daha fazla bilgi için bkz: noalias ve kısıtlamak.

Gereksinimler

Yordamı

Gerekli başlık

malloc

<stdlib.h> ve <malloc.h>

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Kitaplıkları

Tüm sürümleri c çalışma zamanı kitaplıkları.

Örnek

// 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 Eşdeğeri

Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.

Ayrıca bkz.

Başvuru

Bellek ayırma

calloc

free

realloc