ciao!

non riesco a capire quando mi viene lanciato un segmentation fault
il codice del programma e' questo:

codice:
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>



#define CTRLCODC  "SELECT * FROM Corsi  Where id_Corso = '%s';"

const char* host = "localhost"; // host di connessione
const char* database = "SIS";  // database di connessione
const char* db_user = "matteo"; // nome utente per la connessione
const char* db_pass = "Esedra#84"; // password non cifrata
#define INSSTU    "INSERT INTO `Studenti` ( `Matricola` , `Nome_S` , `Cognome_S` , `email_s` , `Telefono_S` , `Pin Uni` , `Codice Sms` , `Indirizzo` , `Abbonato` )VALUES ('505013', 'Michele', 'Trevi', 'ssss@gmail.com', '3402313133', '234312', '324153', 'via pino', '0'); "
int collegmanetoDB(MYSQL *  mysql ){

   if (! mysql_init (mysql)) {
                printf ("Errore nella allocazione di memoria.\n");
                
		return -1;
        }

        if (! mysql_real_connect (mysql, host, db_user, db_pass, "",0, NULL, 0)) {
                printf ("Errore nella connessione.\n");
                
		return -2;
        }
	
	if (mysql_select_db (mysql, database)) {
                printf ("Errore nella selezione del database.\n");
                return -3;
        
        }	
	return 0;

}





int main ()
{
        MYSQL *  mysql;
    
        int i = 0, j = 0 ;
	char c[10] ;
	char * query;
	char query1[100]; 
	strcpy(c  , "10001");
      
       
	query = malloc ( 255 * strlen(INSSTU));
	query = INSSTU;
	
	printf("%s\n" , query );
	
	if(collegmanetoDB( mysql ) != 0){
	  /*  printf("Errore di qualcosa!!%d" , err);*/
	  return -1;
	}
       
           
// esegue la query
        if (mysql_query (mysql, query)) {
                printf("Errore nella query.\n");
                printf("%s" , mysql_error (mysql));
	        mysql_close (mysql);
		return -1;
        }
       





	// chiude le risorse
        mysql_close (mysql);

        exit (EXIT_SUCCESS);
	return 0;
}

e per adesso nessun problema!
ma se la funzione main la vado a chiamare "ehi" e la lancio da un main che si trova sempre nello stesso file
codice:
codice:
int main(){

  int  k;
  
  k = ehi();
  printf("%d" , k);
  return 0;
e mi da' segmentation faulte! ma non capisco il perche'!!!

ciao grazie