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;
}