Avevi commesso un errore nel passaggio del parametro alla funzione messaggio()
Prova così : (io l'ho compilato il winxp sia con mingw che con bcc32)
codice:#include <iostream.h> bool messaggio( char *&testo ) { const char mess[] = "Questo e' il messaggio dalla funzione."; /* ** viene allocato lo spazio per ** scrive il messaggio. */ testo = (char*)malloc( 100 * sizeof( char ) ); memset( testo, '\0', 100 ); // Questa è praticamente inutile /* ** controllo se l'allocazione della ** memoria ha avuto successo. */ if( testo ) { printf("stringa allocata : [%s]\n", testo ); printf("da copiare : [%s]\n", mess ); memcpy( testo, mess, strlen( mess )+1 ); // Copia nel buffer anche il terminatore '\0' printf("copiato : [%s]\n", testo ); return false; } return true; } int main() { char *msg; if( ! messaggio( msg ) ) { printf("Allocazione da funzione ok!\n"); if( msg ) printf("VALORE : [%s]\n", msg); /* <--- */ else printf("qlc non va!"); } else printf("allocazione non riuscita!..."); free( msg ); return 0; }

Rispondi quotando