Originariamente inviato da kirakira93
ok mettiamo che la gestione delle stringhe così TCHAR * szBla si deprecata ed è meglio passare a string o smart pointers.....PERO' se io devo fare un array di oggetty di una classe servendomi dell'allocazione dinamica sono sempre allo stesso punto!!!
No. In primo luogo, se ti serve un array di oggetti in genere è meglio usare std::vector, e comunque puoi sempre creare array con new e usare gli smart pointer per la deallocazione.
se per disgrazia (e non è raro ) mi dovesse crushare
Crashare... to have a crush significa avere una cotta per qualcuno.
prima che io abbia utilizzato il delete...ecco che sono fregato.... e l'heap va a farsi benedire....!
Già ti ho spiegato che in caso di crash il processo viene terminato, e con la terminazione del processo i vari heap da esso creato vengono distrutti. Il sistema operativo in caso di crash libera automaticamente tutte le risorse che il processo deteneva, chiudendone in automatico tutti gli handle.
Perchè??? forse perchè io faccio un nuovo new quando devo ancora fare un delete......e allora esiste un modo per azzarare la memoria all'avvio del programma con funzione preventiva?
Non esiste perché non serve.
o adottare uno stratagemma tipo

codice:
class animale /*bla bla bla*/
animale * cane;

if(cane != NULL) //o una cosa del genere.... per cui chiedo ausilio
    delete [] cane;
cane = new animale [10];
che ne dite....può servire a qualcosa...?
Non ha nessun senso, per il semplice fatto che all'avvio del nuovo processo la variabile cane non avrà alcuna relazione con quella dell'istanza precedente del programma (e tra l'altro il codice che hai scritto in un programma normale farebbe danni, visto che se la variabile cane è allocata sullo stack il suo contenuto è indefinito).
forse è meglio un free() che un delete perchè così non chiama il costruttore......
Mai, mai, MAI mischiare diversi allocatori/deallocatori. Rischi di fare solo danni. Ribadisco, il tuo problema non c'entra niente con tutto questo, per il semplice fatto che, come già ripetuto diverse volte, nuovo processo=nuovo heap, terminazione del processo=distruzione automatica dell'heap, rilascio automatico delle risorse.
=> Aspirante programmatore sconvolto dopo la scoperta che new e delete non sono portabili!
Che c'entra la portabilità adesso? new e delete sono portabili, sono standard C++...