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()operatoremdelete[]. - 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().