View Full Version : [C++] allocare memoria dinamica per un oggetto
19semplicemente
28-07-2005, 18:14
è possibile utilizzare un costruttore e un distruttore per allocare e liberare memoria dinamica?
se si, come si fa?
grazie
RaouL_BennetH
28-07-2005, 18:27
è possibile utilizzare un costruttore e un distruttore per allocare e liberare memoria dinamica?
se si, come si fa?
grazie
io non lo so, ma posso provare a passarti un link che ho trovato:
http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/24Alldinamica.html
19semplicemente
28-07-2005, 18:46
il mio prof se non erro, ad un esame chiese di scrivere un costruttore e un distruttore per allocare e liberare memoria.. ma non so come fare.. ne da dove iniziare...
è possibile utilizzare un costruttore e un distruttore per allocare e liberare memoria dinamica?
se si, come si fa?
grazie
Non solo e' possibile, ma e' molto consigliato.
Stabilisci una regola per te stesso che recita: "l'oggetto che alloca della memoria o crea un altro oggetto deve anche occuparsi della loro distruzione".
19semplicemente
28-07-2005, 19:46
e come si fa?! puoi aiutarmi?
e come si fa?! puoi aiutarmi?
Certo.
class SimpleIntVector
{
public:
SimpleIntVector(int size)
{
mData = new int[size];
}
~SimpleIntVector()
{
delete[] mData;
}
int* GetData(void) const
{
return mData;
}
private:
int* mData;
};
Ehm... GetData() non e' molto elegante, ma ho troppo sonno per scrivere il resto del codice :)
Perche' uso delete[] e non delete?
19semplicemente
28-07-2005, 19:56
xkè è un vettore...
19semplicemente
28-07-2005, 19:57
e se fossero stringhe come sarebbe?
xkè è un vettore...
E' un esempio.
e se fossero stringhe come sarebbe?
char* aString = new char[100];
// ...
delete[] aString;
19semplicemente
28-07-2005, 20:20
ho scritto questo programmino.. e funziona.. però ho un dubbio..
scusa la domanda: ma a questo punto lui continua ad allocare ogni volta ch io creo un oggetto. cioè scrivere
char *nome = new char[50];
significa dire al compilatore che sino a quando vive quell'oggetto lui deve allocare dinamicamente nome, giusto?
#include <iostream>
#include <new>
using namespace std;
class prova{
private:
char* nome, *cognome;
public:
prova(char *n, char *c)
{
nome = new char[20];
cognome = new char[20];
nome = n;
cognome = c;
cout << nome << " " << cognome;
}
~prova()
{
delete[] nome;
delete[] cognome;
}
};
int main(){
prova uno("ciao", "mamma");
return 0;
}
ghiotto86
28-07-2005, 20:31
ho scritto questo programmino.. e funziona.. però ho un dubbio..
scusa la domanda: ma a questo punto lui continua ad allocare ogni volta ch io creo un oggetto. cioè scrivere
significa dire al compilatore che sino a quando vive quell'oggetto lui deve allocare dinamicamente nome, giusto?
quetso significa che appena crei un istanza della classe, le variabili membro sono allocate dinamicamente e devono essere necessariamente deallocato com ti ha detto fek (questo grazie al distruttore che hai fatto).
altro discorso poi ha l'allocazione dinamica di oggetti.
ciauz
ghiotto86
28-07-2005, 20:33
ah ti consiglio di usare la classe string quando implementi programmi con stringhe. è molto flessibile come classe e ti risparmi le complicazioni anche di leggibilità deggli array di char
19semplicemente
28-07-2005, 23:49
non l'ho mai vista come classe.. come funziona?
ghiotto86
29-07-2005, 11:37
non l'ho mai vista come classe.. come funziona?
bhe è molto semplice da usare anche perchè ci sono dei metodi particolare per manipolare le stringhe.
http://www.msoe.edu/eecs/ce/courseinfo/stl/string.htm
vai qui c'è tutto quello che devi sapere
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.