Rumah > Artikel > pembangunan bahagian belakang > Peruntukan Memori Dinamik ialah mekanisme dalam bahasa C. Ia membenarkan atur cara untuk memperuntukkan secara dinamik dan mengosongkan ruang memori pada masa jalanan. Dengan menggunakan peruntukan memori dinamik, program boleh memperuntukkan memori secara dinamik mengikut keperluan tanpa perlu menentukan saiz memori pada masa penyusunan. Ini membolehkan program mengurus memori dengan lebih fleksibel dan menggunakan sumber sistem yang tersedia dengan cekap.
Di sini kita akan mempelajari apa itu peruntukan memori dinamik dalam bahasa C. Bahasa pengaturcaraan C menyediakan beberapa fungsi untuk peruntukan dan pengurusan memori. Fungsi ini boleh didapati dalam fail pengepala
Fungsi ini mengeluarkan blok memori yang ditentukan oleh alamat. | |
---|---|
num | bait dan meninggalkannya tanpa dimulakan.void *realloc(void *address, int newsize); |
newsize | .|
Peruntukkan memori secara dinamik | Semasa pengaturcaraan, jika anda tahu saiz tatasusunan, maka mudah untuk mentakrifkannya sebagai tatasusunan. Sebagai contoh, untuk menyimpan nama mana-mana orang, ia boleh mengandungi sehingga 100 aksara, jadi anda boleh mentakrifkan seperti berikut - char name[100];Tetapi sekarang mari kita pertimbangkan situasi di mana anda tidak tahu panjang teks yang anda perlukan untuk menyimpan, sebagai contoh, anda ingin menyimpan Penerangan terperinci tentang topik. Di sini kita perlu menentukan penunjuk kepada watak tanpa menentukan berapa banyak memori yang diperlukan, dan kemudian seperti yang diperlukan, kita boleh memperuntukkan memori seperti yang ditunjukkan dalam contoh berikut - |
Output | Yang sama boleh ditulis menggunakan program calloc(); satu-satunya masalah ialah anda perlu menggantikan malloc dengan calloc seperti yang ditunjukkan di bawah - calloc(200, sizeof(char));Jadi anda mempunyai kawalan penuh dan boleh melepasi sebarang nilai saiz apabila memperuntukkan memori, tidak seperti tatasusunan yang mempunyai saiz yang telah ditentukan, anda tidak boleh mengubahnya. |
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char name[100]; char *description; strcpy(name, "Adam"); /* allocate memory dynamically */ description = malloc( 30 * sizeof(char) ); if( description == NULL ) { fprintf(stderr, "Error - unable to allocate required memory</p><p>"); } else { strcpy( description, "Adam a DPS student."); } /* suppose you want to store bigger description */ description = realloc( description, 100 * sizeof(char) ); if( description == NULL ) { fprintf(stderr, "Error - unable to allocate required memory</p><p>"); } else { strcat( description, "He is in class 10th"); } printf("Name = %s</p><p>", name ); printf("Description: %s</p><p>", description ); /* release memory using free() function */ free(description); }Output
Name = Adam Description: Adam a DPS student.He is in class 10th
Atas ialah kandungan terperinci Peruntukan Memori Dinamik ialah mekanisme dalam bahasa C. Ia membenarkan atur cara untuk memperuntukkan secara dinamik dan mengosongkan ruang memori pada masa jalanan. Dengan menggunakan peruntukan memori dinamik, program boleh memperuntukkan memori secara dinamik mengikut keperluan tanpa perlu menentukan saiz memori pada masa penyusunan. Ini membolehkan program mengurus memori dengan lebih fleksibel dan menggunakan sumber sistem yang tersedia dengan cekap.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!