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

malloc() vs calloc():Perbedaan Utama dijelaskan dengan Contoh

Sebelum mempelajari perbedaan antara malloc dan calloc mari kita pelajari-

Apa itu Alokasi Memori Dinamis?

Alokasi memori dinamis adalah proses pengalokasian memori pada saat dijalankan. Ada empat rutin perpustakaan, calloc(), free(), realloc(), dan malloc() yang dapat digunakan untuk mengalokasikan memori dan membebaskannya selama eksekusi program. Rutinitas ini didefinisikan dalam file header yang disebut stdlib.h.

Apa itu malloc() ?

Ini adalah fungsi yang digunakan untuk mengalokasikan blok memori secara dinamis. Ini mencadangkan ruang memori dengan ukuran tertentu dan mengembalikan pointer nol yang menunjuk ke lokasi memori.

Pointer yang dikembalikan biasanya bertipe void. Ini berarti bahwa kita dapat menetapkan fungsi malloc ke sembarang pointer. Bentuk lengkap malloc adalah alokasi memori.

Dalam tutorial ini, Anda akan mempelajari:

Apa itu calloc() ?

Fungsi Calloc() digunakan untuk mengalokasikan beberapa blok memori. Ini adalah fungsi alokasi memori dinamis yang digunakan untuk mengalokasikan memori ke struktur data yang kompleks seperti array dan struktur. Jika fungsi ini gagal mengalokasikan cukup ruang seperti yang ditentukan, ia mengembalikan pointer nol. Bentuk lengkap dari fungsi calloc adalah alokasi yang berdekatan.

Mengapa menggunakan malloc() ?

Berikut adalah alasan menggunakan malloc()

Mengapa menggunakan calloc() ?

Berikut adalah alasan menggunakan calloc()

Sintaks malloc()

Berikut adalah Sintaks malloc()

ptr = (cast_type *) malloc (byte_size);

Dalam sintaks di atas, ptr adalah pointer dari cast_type. Fungsi malloc mengembalikan pointer ke memori yang dialokasikan dari byte_size.

Example: ptr = (int *) malloc (50)

Ketika pernyataan ini berhasil dieksekusi, ruang memori sebesar 50 byte dicadangkan. Alamat byte pertama dari ruang yang dicadangkan diberikan ke pointer “ptr” bertipe int.

Sintaks calloc()

Berikut adalah Sintaks malloc()

ptr = (cast_type *) calloc (n, size);

Sintaks di atas digunakan untuk mengalokasikan n blok memori dengan ukuran yang sama. Setelah ruang memori dialokasikan, semua byte diinisialisasi ke nol. Pointer, yang saat ini berada pada byte pertama dari ruang memori yang dialokasikan, dikembalikan.

Contoh malloc() di C

Dalam kode di bawah ini, sizeof(*ptr) digunakan untuk mengalokasikan blok memori dari 15 bilangan bulat. Dalam pernyataan printf, kami menemukan nilai bilangan bulat ke-6.

#include<stdlib.h>
#include<stdio.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); 
    if (ptr != NULL) {
      *(ptr + 5) = 480; 
      printf("Value of the 6th integer is %d",*(ptr + 5));
    }
}

Keluaran:

Nilai bilangan bulat ke-6 adalah 480

Contoh calloc() di C

Program bahasa C di bawah ini menghitung jumlah sepuluh suku pertama. Jika nilai pointer jika null, maka ruang memori tidak akan dialokasikan.

Untuk loop digunakan untuk mengulang nilai variabel “i” dan mencetak jumlah. Terakhir, function free digunakan untuk membebaskan pointer.

#include <stdio.h>
#include <stdlib.h>
    int main() {
        int i, * ptr, sum = 0;
        ptr = calloc(10, sizeof(int));
        if (ptr == NULL) {
            printf("Error! memory not allocated.");
            exit(0);
        }
        printf("Building and calculating the sequence sum of the first 10 terms \n");
        for (i = 0; i < 10; ++i) { * (ptr + i) = i;
            sum += * (ptr + i);
        }
        printf("Sum = %d", sum);
        free(ptr);
        return 0;
    }

Keluaran:

Membangun dan menghitung jumlah barisan 10 suku pertama n Jumlah =45

Perbedaan Antara calloc() dan malloc()

Berikut adalah perbedaan penting antara malloc() dan calloc():

malloc() panggilan() Fungsi Malloc() akan membuat satu blok memori dengan ukuran yang ditentukan oleh pengguna.Fungsi Calloc() dapat menetapkan beberapa blok memori untuk suatu variabel.Fungsi Malloc berisi nilai sampah.Blok memori yang dialokasikan oleh fungsi calloc selalu diinisialisasi ke nol.Jumlah argumen adalah 1.Jumlah argumen 2.Calloc lebih lambat dari malloc.Malloc lebih cepat dari calloc.Ini tidak aman dibandingkan dengan calloc.Ini aman untuk digunakan dibandingkan dengan malloc.Efisiensi waktu lebih tinggi dari calloc (.Efisiensi waktu lebih rendah dari malloc().Malloc() fungsi hanya mengembalikan alamat awal dan tidak membuatnya nol.Sebelum mengalokasikan alamat, fungsi Calloc() mengembalikan alamat awal dan menjadikannya nol.Itu tidak melakukan inisialisasi memori. Ini melakukan inisialisasi memori.

PERBEDAAN UTAMA:


Bahasa C

  1. C# Ekspresi, Pernyataan, dan Blok (Dengan Contoh)
  2. C++ do… while loop dengan Contoh
  3. C++ Pointer dengan Contoh
  4. Tipe Data C++ Char dengan Contoh
  5. Operator C++ Overloading dengan Contoh
  6. Fungsi C++ dengan Contoh Program
  7. Tutorial Koleksi C# dengan Contoh
  8. Perbedaan antara while dan do-while:Dijelaskan dengan Contoh
  9. calloc() Fungsi di C Library dengan Program CONTOH
  10. Python String count() dengan CONTOH