Pourquoi ma variable est detruite au fure et a mseure

J'ai mis un commentaire à côte des

Serial.println(parameters);

int InetGSM::httpPOST(const char* server, int port, const char* path, const char* parameters, char* result, int resultlength)
{
        Serial.println(F("Starting to send"));
	Serial.println(parameters); // Ceci lo=0.000000&la=0.000000&al=0.000000&ti=20130714213229.!Û%

	Serial.println(parameters); // ceci lo=0.000000&la=0.000000&al=0.000000&ti=20130714213229.

  
  boolean connected=false;
  int n_of_at=0;
  char itoaBuffer[8];
  int num_char;
  char end_c[2];
  end_c[0]=0x1a;
  end_c[1]='\0';

  while(n_of_at<3){
	  if(!connectTCP(server, port)){
	  	#ifdef DEBUG_ON
			Serial.println("DB:NOT CONN");
		#endif	
	    	n_of_at++;
	  }
	  else{
		connected=true;
		n_of_at=3;
	}
  }

  if(!connected){
  	Serial.println(F("Not connected"));
  	return 0;
  }
	
	Serial.println(parameters); // Ceci affiche  : Ê
	Serial.println(parameters); // Ceci affiche encore : Ê


  gsm.SimpleWrite("POST ");
  gsm.SimpleWrite(path);
  gsm.SimpleWrite(" HTTP/1.1\nHost: ");
  gsm.SimpleWrite(server);
  gsm.SimpleWrite("\n");
  gsm.SimpleWrite("User-Agent: Arduino\n");
  gsm.SimpleWrite("Content-Type: application/x-www-form-urlencoded\n");
  gsm.SimpleWrite("Content-Length: ");
  itoa(strlen(parameters),itoaBuffer,10);
  gsm.SimpleWrite(itoaBuffer);
  gsm.SimpleWrite("\n\n");
  gsm.SimpleWrite(parameters);
  gsm.SimpleWrite("\n\n");
  
  gsm.SimpleWrite(end_c);
 
 Serial.println(parameters); // et  Ceci affiche encore : Ê
 Serial.println(parameters); / et encore  Ceci affiche encore : Ê....
 
  switch(gsm.WaitResp(10000, 10, "SEND OK")){
	case RX_TMOUT_ERR: 
		return 0;
	break;
	case RX_FINISHED_STR_NOT_RECV: 
		return 0; 
	break;
  }

 delay(50);
	#ifdef DEBUG_ON
		Serial.println("DB:SENT");
	#endif	

  int res= gsm.read(result, resultlength);
  Serial.println(F("Data sent"));
  
  //gsm.disconnectTCP();
  return res;
}

Selon les commentaire que j'ai mis dans le code, pourquoi 'parameters' perds sa valeurs???? alors qu'elle devrait rester
lo=0.000000&la=0.000000&al=0.000000&ti=20130714213222.000&ve=0.000000

Es-ce que j'ai fait un truc de faux dans ma function getGPSCoords() lorsque je retourne coords (return coords;)?

J'ai entendu parler de la declarer en static ou d'utiliser malloc(), mais la je suis largué car il faut que la taille de char coords[] puisse s'adapter en fonction des tailles des positions GPS.

J'espère que vous m'avez compris et que j'ai été claire et si vous arriviez à me dépanner ca serat d'une très grande utilité!!

Milles mercis

Dite moi si vous avez besoin plsu de code!!!