Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-07-2005, 17:14   #1
19semplicemente
Senior Member
 
Iscritto dal: Feb 2004
Città: Bari
Messaggi: 373
[C++] allocare memoria dinamica per un oggetto

è possibile utilizzare un costruttore e un distruttore per allocare e liberare memoria dinamica?

se si, come si fa?

grazie
19semplicemente è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 17:27   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da 19semplicemente
è 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-inform...ldinamica.html
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 17:46   #3
19semplicemente
Senior Member
 
Iscritto dal: Feb 2004
Città: Bari
Messaggi: 373
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...
19semplicemente è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 18:43   #4
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da 19semplicemente
è 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".
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 18:46   #5
19semplicemente
Senior Member
 
Iscritto dal: Feb 2004
Città: Bari
Messaggi: 373
e come si fa?! puoi aiutarmi?
19semplicemente è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 18:51   #6
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da 19semplicemente
e come si fa?! puoi aiutarmi?
Certo.

Codice:
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?
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 18:56   #7
19semplicemente
Senior Member
 
Iscritto dal: Feb 2004
Città: Bari
Messaggi: 373
xkè è un vettore...
19semplicemente è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 18:57   #8
19semplicemente
Senior Member
 
Iscritto dal: Feb 2004
Città: Bari
Messaggi: 373
e se fossero stringhe come sarebbe?
19semplicemente è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 19:11   #9
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da 19semplicemente
xkè è un vettore...
E' un esempio.

Quote:
Originariamente inviato da 19semplicemente
e se fossero stringhe come sarebbe?
Codice:
char* aString = new char[100];

// ...

delete[] aString;
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 19:20   #10
19semplicemente
Senior Member
 
Iscritto dal: Feb 2004
Città: Bari
Messaggi: 373
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
Quote:
char *nome = new char[50];
significa dire al compilatore che sino a quando vive quell'oggetto lui deve allocare dinamicamente nome, giusto?


Quote:
#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;
}
19semplicemente è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 19:31   #11
ghiotto86
Senior Member
 
L'Avatar di ghiotto86
 
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
Quote:
Originariamente inviato da 19semplicemente
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 è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 19:33   #12
ghiotto86
Senior Member
 
L'Avatar di ghiotto86
 
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
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
ghiotto86 è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2005, 22:49   #13
19semplicemente
Senior Member
 
Iscritto dal: Feb 2004
Città: Bari
Messaggi: 373
non l'ho mai vista come classe.. come funziona?
19semplicemente è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2005, 10:37   #14
ghiotto86
Senior Member
 
L'Avatar di ghiotto86
 
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
Quote:
Originariamente inviato da 19semplicemente
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
ghiotto86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v