ďťż

Ładny brzuch

Czym różnią się te funkcje? Obie są funkcjami języka c++



malloc jest używany w c(również w c++, ale rzadziej) , a w c++ używa się operatora new

Generalnie obie służą do allokacji pamięci, z tym że malloc to funkcja pochodząca z C, natomiast new to operator wprowadzony w C++. Generalnie różnica między nimi niewielka, new jest trochę szybsze od malloc, podobno bezpieczniejsze. Składniowo:

char * wsk = malloc(100); //allokacja
free(wsk);//deallokacja

char * wsk = new char[100]; //allokacja
delete wsk; //deallokacja

Fakt, że new / delete to operatory pozwala nam na ich przeładowanie:

W klasie:
class klasa{
//==============
void *operator new(size_t size);
void operator delete(void* obj);
//==============
};

Lub globalnie:
void *operator new(size_t size);
void operator delete(void* obj);

Z takimi możliwościami można np. napisać własnego Memory Managera, który będzie w określony przez programistę sposób kierował allokacją pamięci.

//================================================

KĄESACP: Komputer Ąwiat - Expert Society Against Crap Posting
To join: Put these lines in your signature and don't post crap!

new alokuje pamiec na stercie, a malloc tez sluzy do przydzialu pamieci. Funkcja malloc przydziela okreslona ilosc bajtow, a zawartosc przydzielonej pamieci jest nieokreslona. To tego malloc zwraca wskaznik do przydzielonej pamieci lub NULL jesli alokacja sie nie powiodla.

>BaR_TeK<
Language: C++/DirectX/WinAPI
IDE: MS Visual C++



A tak ogólniej, new jest bardziej uniwersalna, gdyż funkcja malloc jest funkcją bardzo nisko poziomową. Argumentem funkcji malloc jest liczba bajtow jaka chcemy zarezerwowac, a na różnych maszynach różnie to wygląda. Jeśli zastanawiasz się której używać, to zdecydowanie używaj NEW.;)

----------------
Zawsze jest schemat
----------------

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •