Oppure

Loading
30/11/09 15:25
lorenzo
Postato originariamente da HeDo:



200 cosa? patate? byte?


spero fosse una battuta....se non lo era ne sono molto deluso
aaa
30/11/09 15:28
Stefano
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];
aaa
30/11/09 16:19
lorenzo
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 30/11/09 16:20
aaa
30/11/09 16:55
HeDo
Postato originariamente da lorenzo:

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...
aaa
30/11/09 18:40
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"
aaa
30/11/09 19:04
HeDo
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.
aaa