Initialiser const char * avec toutes les fuites de mémoire

Ci-dessous mon code d'exemple. C'est juste un exemple de ce qui est semblable au code que j'utilise dans mon application.

#define STR_SIZE 32

void someThirdPartyFunc(const char* someStr);

void getString(int Num, const char* myStr)
{
  char tempStr[] = "MyTempString=";
  int size = strlen(tempStr) + 2;
  snprintf((char*)myStr, size, "%s%d", tempStr, Num);
}

int main()
{
  const char * myStr = new char(STR_SIZE);
  getString(1, myStr); //get the formated string by sending the number
  someThirdPartyFunc(myStr); //send the string to the thirdpartyFunction
  delete myStr;

  return 0;
}

Je suis une exception, si j'utilise ce code. Je pense que le problème est avec la suppression de la "myStr". Mais supprimer est vraiment nécessaire.

Est-il un autre moyen pour le format de la chaîne dans getString et l'envoyer à l'ThirdPartyFunc??

Merci d'avance.

  • Je ne suis pas sûr de ce que vous faites, mais pourquoi ne pas utiliser std::string à la place?
  • Pouvez-vous nous expliquer, pourquoi + 2 dans strlen(tempStr) + 2?
  • Pourquoi êtes-vous prendre myStr comme const char*, et puis le casting du const loin dans la fonction?
  • Je vous remercie. Je ne peux pas utiliser std::string :(.
InformationsquelleAutor Jabez | 2013-02-08