malloc

Mengalokasikan blok memori.

Sintaks

void *malloc(
   size_t size
);

Parameter

size
Byte untuk dialokasikan.

Nilai kembali

malloc mengembalikan penunjuk ke ruang yang dialokasikan, atau NULL jika memori yang tersedia tidak mencukuum. Untuk mengembalikan penunjuk ke jenis selain void, gunakan jenis transmisi pada nilai yang dikembalikan. Ruang penyimpanan yang ditunjukkan oleh nilai pengembalian cocok diselaraskan untuk penyimpanan jenis objek apa pun yang memiliki persyaratan perataan kurang dari atau sama dengan perataan dasar. (Di Visual C++, perataan dasar adalah perataan yang diperlukan untuk double, atau 8 byte. Dalam kode yang menargetkan platform 64-bit, itu adalah 16 byte.) Gunakan _aligned_malloc untuk mengalokasikan penyimpanan untuk objek yang memiliki persyaratan perataan yang lebih besar—misalnya, jenis __m128 SSE dan __m256, dan yang dideklarasikan dengan menggunakan __declspec(align( n )) di mana n lebih besar dari 8. Jika size adalah 0, malloc mengalokasikan item panjang nol dalam heap dan mengembalikan penunjuk yang valid ke item tersebut. Selalu periksa pengembalian dari malloc, bahkan jika jumlah memori yang diminta kecil.

Keterangan

Fungsi ini malloc mengalokasikan blok memori setidaknya size byte. Blok mungkin lebih besar dari size byte karena ruang yang diperlukan untuk informasi penyelarasan dan pemeliharaan.

mallocerrno diatur ke ENOMEM jika alokasi memori gagal atau jika jumlah memori yang diminta melebihi _HEAP_MAXREQ. Untuk informasi tentang ini dan kode kesalahan lainnya, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Kode startup menggunakan malloc untuk mengalokasikan penyimpanan untuk _environvariabel , envp, dan argv . Fungsi berikut dan rekan-rekan karakter lebarnya juga memanggil malloc.

Fungsi C++ _set_new_mode mengatur mode handler baru untuk malloc. Mode handler baru menunjukkan apakah, pada kegagalan, malloc adalah memanggil rutinitas handler baru sebagaimana diatur oleh _set_new_handler. Secara default, malloc tidak memanggil rutinitas handler baru saat gagal mengalokasikan memori. Anda dapat mengambil alih perilaku default ini sehingga, ketika malloc gagal mengalokasikan memori, malloc memanggil rutinitas handler baru dengan cara yang sama seperti yang new dilakukan operator ketika gagal karena alasan yang sama. Untuk mengambil alih default, hubungi _set_new_mode(1) di awal program Anda, atau tautkan dengan NEWMODE.OBJ (lihat Opsi tautan).

Ketika aplikasi ditautkan dengan versi debug pustaka run-time C, malloc diselesaikan ke _malloc_dbg. Untuk informasi selengkapnya tentang bagaimana tumpukan dikelola selama proses penelusuran kesalahan, lihat detail tumpukan debug CRT.

malloc ditandai __declspec(noalias) dan __declspec(restrict). Atribut ini berarti bahwa fungsi dijamin tidak memodifikasi variabel global, dan bahwa penunjuk yang dikembalikan tidak diberi alias. Untuk informasi lebih lanjut, lihat noalias dan restrict.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang dibutuhkan
malloc <stdlib.h> dan <malloc.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Pustaka

Semua versi pustaka run-time C.

Contoh

// 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" );
   }
}
Memory space allocated for path name
Memory freed

Lihat juga

Alokasi Memori
calloc
free
realloc
_aligned_malloc