Ĺ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
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
----------------