malloc() w C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Co to jest malloc()?

malloc() to funkcja służąca do dynamicznego przydzielania pamięci. Pochodzi z języka C, ale może być używana także w C++ po dołączeniu nagłówka <cstdlib>.

Funkcja malloc() rezerwuje podaną liczbę bajtów w pamięci i zwraca wskaźnik do początku przydzielonego obszaru.

Składnia

void* malloc(size_t rozmiar);

Ponieważ malloc() zwraca wskaźnik typu void*, w C++ zwykle wykonuje się rzutowanie na odpowiedni typ.

Przykład przydzielenia pamięci dla tablicy

#include <cstdlib>
#include <iostream>

int main() {
    int n = 10;
    int* tab = (int*) malloc(n * sizeof(int));

    if (tab == nullptr) {
        std::cout << "Brak pamięci";
        return 1;
    }

    tab[0] = 5;

    free(tab);
    return 0;
}

W przykładzie wyrażenie n * sizeof(int) oznacza liczbę bajtów potrzebną na tablicę n elementów typu int.

Ważne informacje

  • malloc() tylko przydziela pamięć, ale nie wywołuje konstruktorów obiektów.
  • Pamięć zaalokowaną przez malloc() należy zwolnić funkcją free().
  • Nie wolno zwalniać pamięci z malloc() operatorem delete[].
  • W nowoczesnym C++ częściej stosuje się new[], a jeszcze lepiej kontenery, np. std::vector.

W kontekście egzaminu

Jeżeli pytanie brzmi: „Którą funkcję w C++ można zastosować do dynamicznego przydzielania pamięci dla tablicy?”, poprawną odpowiedzią spośród podanych opcji jest malloc().