PDA

Visualizza la versione completa : [C/C++] domanda su `new' o `malloc'


Puffolott0
11-12-2003, 15:18
Ciao...
Leggo da tutte le parti che new (o, se preferite il C, malloc) e' importantissimo nel C++.
Ma esattamente quali vantaggi e svantaggi ha, e quando bene utilizzarlo?

- Se ho bisogno di due variabili che contengono le dimensioni di una finestra, buona cosa creare queste variabili col new, e deletarle subito dopo aver creato la finestra?

- Se mi serve una variabile temporanea, per invertire il contenuto di due variabili:
tmp = a;
a = b;
b = tmp;
bene liberare la memoria allocata da tmp quando non serve pi?

- Se devo fare un gioco che richiede molte variabili, ma che non servono quando esco dal gioco vero e proprio e torno nel men principale, bene liberare la memoria occupata da queste variabili quando non servono pi o no?

Grazie
Puffolott0
:ciauz:

pixer
11-12-2003, 15:21
new serve per dare un'oggetto la giusta dimensione in memoria ed applicabile solo ai puntatori.

esempio:

int *a;
a = new int[50];

definisce un array da 50 interi.

Puffolott0
11-12-2003, 15:25
Originariamente inviato da pixer
new serve per dare un'oggetto la giusta dimensione in memoria ed applicabile solo ai puntatori.

esempio:

int *a;
a = new int[50];

definisce un array da 50 interi.
Ma esattamente perch dovrei preferire il pezzo di codice:
int *a;
a = new int[50];
al pezzo di codice:
int a[50];
?

:master:

pixer
11-12-2003, 15:27
Originariamente inviato da Puffolott0
Ma esattamente perch dovrei preferire il pezzo di codice:
int *a;
a = new int[50];
al pezzo di codice:
int a[50];
?

:master: con new puoi definire dinamicamente la dimensione dell'oggetto, ovvero al momento dell'esecuzione del programma.

Puffolott0
11-12-2003, 15:33
Originariamente inviato da pixer
con new puoi definire dinamicamente la dimensione dell'oggetto, ovvero al momento dell'esecuzione del programma. Uhm... Scusa ma non ho ancora ben capito...
Ho letto una guida on-line sul c++ un p di tempo fa, ma quello sull'allocazione della memoria uno dei pezzi che ho compreso meno...
Ho letto che usare new e delete permette di allocare in memoria una variabile e poi di levarcela liberando i bit che occupava... Giusto?
Se s... Tra i tre esempi che ho fatto prima, quando bene usarla, e quando non serve a nulla o addirittura controproducente?
In pratica... Quand' che conviene usare new per creare una variabile e quando conviene farlo col metodo "classico"?

Scusa se rompo, ma mi garberebbe imparare ad usare new e delete correttamente :)
:ciauz:

Loading