Allouer dynamiquement de la mémoire pour const char string à l'aide de malloc()

Je suis en train d'écrire un programme qui lit une valeur de un .fichier ini, puis passe la valeur à une fonction qui accepte un PCSTR (c'est à dire const char *). La fonction est getaddrinfo().

Donc, je veux écrire PCSTR ReadFromIni(). Pour retourner une chaîne constante, j'ai l'intention d'allouer de la mémoire à l'aide de malloc() et la coulée de la mémoire à une chaîne constante. Je vais être en mesure d'obtenir le nombre exact de caractères qui ont été lues à partir de la .fichier ini.

Est que la technique ok? Je ne sais pas vraiment quoi faire d'autre.

L'exemple suivant exécute correctement dans Visual Studio 2013, et affiche "bonjour" comme souhaité.

const char * m()
{
    char * c = (char *)malloc(6 * sizeof(char));
    c = "hello";
    return (const char *)c;
}    

int main(int argc, char * argv[])
{
    const char * d = m();
    std::cout << d; //use PCSTR
}
C'est une mauvaise idée d'écrire un programme en deux différents langages de programmation à la fois. Choisissez une langue. Si votre compilateur de Visual Studio, alors vous devriez certainement s'installer pour C++ pur, parce que VS est horrible, de la conformité à la norme C.
Pourquoi le C++ tag? Ressemble à du c.
Juste pour information "sizeof(char)" est par définition 1.
std::cout est le C++.

OriginalL'auteur paperduck | 2014-02-05