😈
ReverseMe
  • Introduction
  • References
  • ReverseMe
    • Introduction
      • What is Reverse Engineering?
      • Legality of Reverse Engineering
      • Reverse Engineering Communities
  • Programming Language
    • C
      • Basic
        • Pointer
        • Casting
      • Reference
        • stdio.h
          • fclose()
          • fopen()
          • fseek()
          • ftell()
          • fgetc()
          • fgets()
          • fread()
          • fprintf()
          • fwrite()
          • printf()
          • putchar()
          • puts()
          • sprintf()
          • snprintf()
        • stdlib.h
          • malloc()
          • calloc()
          • realloc()
          • free()
          • rand()
          • srand()
        • string.h
          • strcat()
          • strncat()
          • strcmp()
          • strncmp()
          • strcpy()
          • strncpy()
        • time.h
          • time()
  • Reversing Fundamentals
    • Stripped and Unstripped
  • Tools
    • file
    • strings
    • ltrace
    • ghidra
  • CTF Writeups
    • HackTheBox Challenges
      • Baby RE
      • You Cant C Me
  • ABOUT ME
    • Mail
    • LinkedIn
    • GitHub
Powered by GitBook
On this page
  • Sintaks
  • Contoh Penggunaan
  • 1. Mengalokasikan memori untuk integer
  • 2. Mengalokasikan memori untuk array dinamis
  • 3. Mengalokasikan memori untuk string
  1. Programming Language
  2. C
  3. Reference
  4. stdlib.h

malloc()

Mengalokasikan memori secara dinamis dalam C

Fungsi malloc() digunakan untuk mengalokasikan memori secara dinamis di heap. Berbeda dengan array statis, malloc() memungkinkan program untuk mengalokasikan memori sesuai kebutuhan saat runtime.

Sintaks

void *malloc(size_t size);
  • size âžœ Jumlah byte yang ingin dialokasikan.

  • Mengembalikan pointer ke blok memori yang dialokasikan.

  • Jika gagal, mengembalikan NULL.

Contoh Penggunaan

1. Mengalokasikan memori untuk integer

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr;

    // Alokasi memori untuk satu integer
    ptr = (int*) malloc(sizeof(int));

    if (ptr == NULL) {
        printf("Alokasi memori gagal!\n");
        return 1;
    }

    *ptr = 42;  // Menyimpan nilai ke dalam memori yang dialokasikan
    printf("Nilai yang disimpan: %d\n", *ptr);

    free(ptr);  // Membebaskan memori yang sudah dialokasikan
    return 0;
}

Hasilnya:

Nilai yang disimpan: 42
  • malloc(sizeof(int)) âžœ Mengalokasikan 4 byte untuk satu integer.

  • Memeriksa NULL âžœ Jika alokasi gagal, program akan keluar.

  • *ptr = 42 âžœ Menyimpan nilai 42 di memori yang dialokasikan.

  • free(ptr) âžœ Membebaskan memori setelah selesai digunakan.

2. Mengalokasikan memori untuk array dinamis

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *arr;
    int n = 5;

    // Alokasi memori untuk array dengan 5 elemen
    arr = (int*) malloc(n * sizeof(int));

    if (arr == NULL) {
        printf("Alokasi memori gagal!\n");
        return 1;
    }

    // Mengisi array
    for (int i = 0; i < n; i++) {
        arr[i] = i * 2;
    }

    // Menampilkan array
    printf("Array yang dialokasikan: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    free(arr);  // Membebaskan memori
    return 0;
}

Hasilnya:

Array yang dialokasikan: 0 2 4 6 8
  • malloc(n * sizeof(int)) âžœ Mengalokasikan 5 x 4 byte = 20 byte untuk array integer.

  • Mengisi array dengan nilai i * 2.

  • Menampilkan isi array.

  • free(arr) âžœ Membebaskan memori setelah digunakan.

3. Mengalokasikan memori untuk string

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

int main() {
    char *str;

    // Alokasi memori untuk 20 karakter
    str = (char*) malloc(20 * sizeof(char));

    if (str == NULL) {
        printf("Alokasi memori gagal!\n");
        return 1;
    }

    strcpy(str, "Hello, malloc!");
    printf("String: %s\n", str);

    free(str);  // Bebaskan memori
    return 0;
}

Hasilnya:

String: Hello, malloc!
  • malloc(20 * sizeof(char)) âžœ Mengalokasikan 20 byte untuk string.

  • strcpy(str, "Hello, malloc!") âžœ Menyalin string ke memori yang dialokasikan.

  • free(str) âžœ Membebaskan memori setelah digunakan.

Previousstdlib.hNextcalloc()

Last updated 2 months ago