Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - malloc in vista
Forum - C/C++ - malloc in vista - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Stefano (Ex-Member)
Rookie


Messaggi: 32
Iscritto: 27/12/2007

Segnala al moderatore
Postato alle 16:28
Lunedì, 30/11/2009
scusate se continuo con domande cosi "insulse" ma non ho operato mai in questo modo, cosi è un modo per imparare.

E' valido un assegnamento del tipo char * puntatore = new char; ? O è piu legale char * puntatore = new char[N];

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 17:19
Lunedì, 30/11/2009
non puo andare a tentoni...cercati un tutorial sull'allocazion dinamica della memoria in C++ se vuoi approfondire.

comunque, per farla breve, quando usi la new con un tipo primitivo:
char *c = new char;

è come se stessi usando la malloc istanziando una grandezza di sizeof(char)

se fai
char *a = new char[100];
è uguale alla malloc con sizeof(char) * 100

se fai la new con una classe C++ viene invocato il costruttore della classe

Ricordati che ogni cosa che instanzi con la new la devi distruggere con la delete.
Per i miei esempi:

delete c;
delete[] a;

Ultima modifica effettuata da lorenzo il 30/11/2009 alle 17:20
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 17:55
Lunedì, 30/11/2009
Testo quotato

Postato originariamente da lorenzo:

Testo quotato

Postato originariamente da HeDo:



200 cosa? patate? byte?



spero fosse una battuta....se non lo era ne sono molto deluso



boh se non era una battuta questa :rotfl::rotfl:

cmq quello che non afferrate ancora è che il problema non è il programma in se, ovvero il codice del programma, ma il COME è stato compilato o il COSA gira / è installato sulla macchina di deployment. Quindi prima di andare a cambiare il programma in qualche strano modo è meglio concentrarsi su queste cose...

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:40
Lunedì, 30/11/2009
ok, vero che on bisognerebbe cambiare un programma solo perché non gira su una piattaforma. Però in questo caso l'uso della malloc è deprecato e pericoloso. Il C++ offre la new, uno strumento più sicuro e di più facile utilizzo.

Il fatto che il compilatore c++ offra anche la retrocompatibilità con il C è una "chicca" in più che a mio parere è pericolosa e non rende facile imparare il C++ per i "novizi"

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:04
Lunedì, 30/11/2009
Testo quotato

Postato originariamente da lorenzo:

ok, vero che on bisognerebbe cambiare un programma solo perché non gira su una piattaforma. Però in questo caso l'uso della malloc è deprecato e pericoloso. Il C++ offre la new, uno strumento più sicuro e di più facile utilizzo.

Il fatto che il compilatore c++ offra anche la retrocompatibilità con il C è una "chicca" in più che a mio parere è pericolosa e non rende facile imparare il C++ per i "novizi"



sono d'accordo che sarebbe preferibile l'utilizzo di new e delete al posto di malloc e free, ma non giustifico fatto di dover cambiare tutte le malloc in new solo perchè non gira su vista... il problema è sicuramente altrove, ho indicato dove cercarlo.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo