|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
[C - C++]Allocazione dinamica della memoria, differenza
Ciao a tutti, guardando il mio nuova manuale di C++ ho visto il nuovo metodo di allocazione dinamica della memoria e mi è subito venuto un dubbio
![]() prima in C facevo così: Codice:
#include <calloc.h> ... double *p = NULL; ... p = (double *) calloc(10, sizeof(double)); cfree(p); Codice:
... double *p = NULL; ... p = new double[10]; ... delete p; prima facevo così: Codice:
p = realloc(p, _msize(p) + (5 * sizeof(double)); ![]() Ultima modifica di sirus : 01-03-2005 alle 14:07. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Re: [C - C++]Allocazione dinamica della memoria, differenza
Quote:
![]() O meglio, non si fa come in C, ma in maniera "piu' lenta", perche' in C++ hai a che fare con oggetti che non possono in generale essere copiati bit a bit. Per questo motivo non esiste alcun modo in C++ standard per reallocare la memoria "in place" come in C. Finita la teoria, ora la pratica. Codice:
double* arrayOfDouble = new double[10]; ... // alloca un nuovo array double* newArrayOfDouble = new double[20]; // copia il vecchio array in quello nuovo for (unsigned int i = 0; i < 10; ++i) { newArrayOfDouble[i] = arrayOfDouble[i]; } // cancella il vecchio array delete[] arrayOfDouble; // cambia nome al nuovo array arrayOfDouble = newArrayOfDouble; Se vuoi una versione piu' concisa puoi usare STL.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
grazie per le info
![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ci tengo a precisare che in C++ è ancora possibile utilizzare malloc realloc e free, quindi puoi utilizzare realloc solo se il blocco l'hai allocato con malloc, non con new; in teoria potresti anche con new, ma è meglio di no.
ciao |
![]() |
![]() |
![]() |
#5 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ah, ovviamente vale anche per calloc
![]() |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Oppure usi vector e ti sbatti altamente dell'allocazione...
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:54.