Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C - Manajemen Memori

Bab ini menjelaskan manajemen memori dinamis dalam C. Bahasa pemrograman C menyediakan beberapa fungsi untuk alokasi dan manajemen memori. Fungsi-fungsi ini dapat ditemukan di file header.

No.Sr. Fungsi &Deskripsi
1

void *calloc(int num, int size);

Fungsi ini mengalokasikan array num elemen yang masing-masing ukurannya dalam byte akan menjadi ukuran .

2

tidak berlaku gratis(tidak berlaku *alamat);

Fungsi ini melepaskan blok blok memori yang ditentukan oleh alamat.

3

void *malloc(size_t size);

Fungsi ini mengalokasikan array num byte dan membiarkannya tidak diinisialisasi.

4

void *realloc(void *address, int newssize);

Fungsi ini mengalokasikan ulang memori dengan memperluasnya hingga newsize .

Mengalokasikan Memori Secara Dinamis

Saat memprogram, jika Anda mengetahui ukuran array, maka itu mudah dan Anda dapat mendefinisikannya sebagai array. Misalnya, untuk menyimpan nama seseorang, maksimal 100 karakter, jadi Anda dapat menentukan sesuatu sebagai berikut −

char name[100];

Tapi sekarang mari kita pertimbangkan situasi di mana Anda tidak tahu tentang panjang teks yang perlu Anda simpan, misalnya, Anda ingin menyimpan deskripsi rinci tentang suatu topik. Di sini kita perlu mendefinisikan pointer ke karakter tanpa menentukan berapa banyak memori yang dibutuhkan dan kemudian, berdasarkan kebutuhan, kita dapat mengalokasikan memori seperti yang ditunjukkan pada contoh di bawah ini −

Demo Langsung
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

   char name[100];
   char *description;

   strcpy(name, "Zara Ali");

   /* allocate memory dynamically */
   description = malloc( 200 * sizeof(char) );
	
   if( description == NULL ) {
      fprintf(stderr, "Error - unable to allocate required memory\n");
   } else {
      strcpy( description, "Zara ali a DPS student in class 10th");
   }
   
   printf("Name = %s\n", name );
   printf("Description: %s\n", description );
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut.

Name = Zara Ali
Description: Zara ali a DPS student in class 10th

Program yang sama dapat ditulis menggunakan calloc(); hanya saja Anda perlu mengganti malloc dengan calloc sebagai berikut

calloc(200, sizeof(char));

Jadi Anda memiliki kontrol penuh dan Anda dapat melewatkan nilai ukuran apa pun saat mengalokasikan memori, tidak seperti array di mana setelah ukuran ditentukan, Anda tidak dapat mengubahnya.

Mengubah Ukuran dan Melepaskan Memori

Ketika program Anda keluar, sistem operasi secara otomatis melepaskan semua memori yang dialokasikan oleh program Anda tetapi sebagai praktik yang baik ketika Anda tidak membutuhkan memori lagi maka Anda harus melepaskan memori itu dengan memanggil fungsi free() .

Atau, Anda dapat menambah atau mengurangi ukuran blok memori yang dialokasikan dengan memanggil fungsi realloc() . Mari kita periksa program di atas sekali lagi dan gunakan fungsi realloc() dan free() −

Demo Langsung
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

   char name[100];
   char *description;

   strcpy(name, "Zara Ali");

   /* allocate memory dynamically */
   description = malloc( 30 * sizeof(char) );
	
   if( description == NULL ) {
      fprintf(stderr, "Error - unable to allocate required memory\n");
   } else {
      strcpy( description, "Zara ali 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\n");
   } else {
      strcat( description, "She is in class 10th");
   }
   
   printf("Name = %s\n", name );
   printf("Description: %s\n", description );

   /* release memory using free() function */
   free(description);
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut.

Name = Zara Ali
Description: Zara ali a DPS student.She is in class 10th

Anda dapat mencoba contoh di atas tanpa mengalokasikan kembali memori tambahan, dan fungsi strcat() akan memberikan kesalahan karena kurangnya memori yang tersedia dalam deskripsi.


Bahasa C

  1. Memori Hanya-Baca (ROM)
  2. Mikroprosesor
  3. Manajemen Memori C++:baru dan hapus
  4. C Alokasi Memori Dinamis
  5. Java - Komentar Dokumentasi
  6. Memori Dinamis C++
  7. Java 10 - Alokasi Heap
  8. Buku Pegangan Manajemen Pemeliharaan
  9. Acara Manajemen Aset 2012
  10. 4 Sasaran untuk Manajemen Aset