Newsgroup: it.comp.lang.c++
Titolo: Builder e new

Ho qualche problemino ad utilizzare new  all'interno del Builder (
attualmente uso il 5 ma ho avuto lo stesso problema anche con altre
versioni  ).
Qualcuno riesce ad utilizzarlo correttamente?
io faccio qualcosadel genere :
char * messaggio;
messaggio= new char (numero);      //    oppure anche messaggio = ( char
* ) new char (numero );
 ...
...
...
delete messaggio;
il problema risiede sempre nell'ultima riga, mi si pianta sempre in quel
punto, perchč? quali sono i metodi di correzione? sto sbagliando
qualcosa?
Fatemi sapere.
Grazie
    Carlo

Salve a tutti.
Qualcuno sa se ci sono problemi con tra il Builder ( ora uso il 5 ma
il problema l'ho da un bel po ) e new?
mi spiego , io vorrei fare qualcosa del genere :
char * messaggio;
messaggio = ( char * ) new char ( dimensione );
...
...
...
delete messaggio;
Il problema risiede in quest'ultima riga, infatti non mi dealloca
nulla,  la cosa triste è  mi accade pure se uso malloc e free.
Perchè? devo includere qualche libreria particolare? Usare qualche
istruzione per il precompilatore?
Il secondo punto riguarda il fatto che questo giochetto lo vorrei
usare all'interno di un ciclo for ... question is : è realizzabile
senza problemi ? 
l'unico problema che ho è che ad ogni ciclo la dimensione deve essere
diversa e quindi mi è necessario usare l'allocazione dinamica,
purtroppo al secondo ciclo mi trovo nella variabile lo stesso valore
che aveva nel primo ciclo ... pur aveendola deallocata.
Grazie
Carlo

messaggio = ( char * ) new char ( dimensione );
Ma non dovrebbe essere :
      messaggio = new char[ dimensione ] ;
????????????????????????????

 che aveva nel primo ciclo ... pur aveendola deallocata.
Se ho capito bene quello che intendi, guarda che la deallocazione non
implica il cambiamento di valore del puntatore, semplicemente la memoria
precedentemente puntata e' marcata come disponibile per allocazioni
future.
 
Ciao,
Nicola

In effetti avrei gradito che con la deallocazione mi liberassi di
qualsiasi schifezza.
Un problema sorto in seguito ( dopo innumerevoli tentativi ed una
strada basata sul ragionamento ) sono arrivato da solo al delete []
messaggio ( una stringa è pur sempre un array ... ), peccato che
spesso e volentieri quando arriva in quel punto ( o al massimo
immediatamente  dopo ) il programma diventa instabile e mi da la
classica schermata di eccezzione sollevata( faccio notare che per
l'allocazione ho usato messaggio = new char [ dimensione ] ) .
Ho parzialmente risolto usando messaggio = StrAlloc ( dimensione ) e
StrDispose ( messaggio ) ma cmq ho solo arginato un problema, non l'ho
affrontato .
Per quanto riguarda la mi a affermazione sul fatto che non deallochi
nulla, tempo fa feci un piccolo esperimento usando le watches, forse
era un momento particolare per il compilatore oppure aveva le sue
cose... fatto sta che dopo la deallocazione la variabile aveva lo
stesso valore ( capisco che riallocando possa riavere lo stesso
valore... ma anche quando la variabile è appesa mi sembra eccessivo !
)
Forse sto girando attorno a qualche bug del Builder ( che mi sembra
pieno ) al contrario di Delphi che nonostante abbia i suoi problemi mi
sembra meno incazzoso in termini di bug ed errori strani.
Carlo


 sembra meno incazzoso in termini di bug ed errori strani.
Il Builder qualche baco ce l'ha, ma difficilmente su cose cosi'
basilari. Prima di incolpare lo strumento, verifica bene il tuo codice.
Ciao,
Nicola

...

Ciao a tutti, io sono nuovo di questo ng , ma a me è successo lo
stesso errore il problema era che il puntatore utilizzato per la
struttura dinamica veniva variato per sbaglio e il pgm si inceppava
proprio in fase di deallocazione, quindi controlla il funzionamento
del puntatore che utilizzi.
Non vorrei per esempio che venga deallocato in precedenza o che venga
erroneamente assegnato ad un indirizzo di memoria che non è quello
ritornato con l'operatore new (N.B. usa sempre casting esplicito) dal
mio punto di vista CBuilder non ha un bug in questo senso

 ritornato con l'operatore new (N.B. usa sempre casting esplicito) 
Dove andrebbe usato e a cosa dovrebbe servire il cast esplicito?
	Mauro