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:
|
|||
|
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.