/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
new [] delete [] vs primitive typer
Fra : Morten Krogh Lorentz~


Dato : 29-08-02 08:40

I have a doubt...

Hvis man allokerer en buffer ved brug af new [] operatoren på en primitiv
type f.eks. char:

char* buffer = new char[50];

skal denne buffer også nedlægges med delete [] operatoren

delete [] buffer;

Eller skal den nedlægges med delete:

delete buffer;

???

Mvh
Morten



 
 
Martin Dyring (29-08-2002)
Kommentar
Fra : Martin Dyring


Dato : 29-08-02 09:16

"Morten Krogh Lorentzen" <spam@nothanks.no> wrote in message
news:akkj43$jn1$1@sunsite.dk...

> skal denne buffer også nedlægges med delete [] operatoren
> [...]
> Eller skal den nedlægges med delete:

Du skal bruge delete [] (i visse tilfælde har en almindelig delete samme
effekt, men det gør det ikke mere rigtigt :).

--
Mvh,
Martin Dyring




Mogens Hansen (29-08-2002)
Kommentar
Fra : Mogens Hansen


Dato : 29-08-02 15:47



"Morten Krogh Lorentzen" <spam@nothanks.no> wrote in message
news:<akkj43$jn1$1@sunsite.dk>...

[8<8<8<]
> skal denne buffer også nedlægges med delete [] operatoren
>
> delete [] buffer;

Ja!

>
> Eller skal den nedlægges med delete:
>
> delete buffer;

Nej.
Undefined behaviour!


Hvorfor ikke:
std::vector<char> buffer(50);
?
Det giver normalt ingen ulemper, kun fordele (du kan ikke glemme at skrive
delete).
Hvis du skal give bufferen til et C API, der forventer en "char*" så skriv:
some_c_api_func(&buffer[0]);

Det er iøvrigt ligegyldigt i den forbindelse om det er primitive type eller
ej.

Venlig hilsen

Mogens Hansen




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste