Qu'est-ce qu'un moyen multi-plateforme pour obtenir le répertoire actuel?

J'ai besoin d'une croix-plate-forme de façon à obtenir le répertoire de travail courant (oui, getcwd fait ce que je veux). J'ai pensé que cela pourrait faire l'affaire:

#ifdef _WIN32
    #include <direct.h>
    #define getcwd _getcwd //stupid MSFT "deprecation" warning
#elif
    #include <unistd.h>
#endif
#include <string>
#include <iostream>
using namespace std;

int main()
{
    string s_cwd(getcwd(NULL,0));
    cout << "CWD is: " << s_cwd << endl;
}

J'ai eu cette lecture:

Il devrait y avoir pas de fuites de mémoire, et il devrait fonctionner sur un Mac, correct?

Mise à JOUR: j'ai peur de quelque chose est encore mal ici (j'essaie d'éviter la création d'un char tableau avec une longueur, comme il n'y a pas de bonne façon d'obtenir une bonne longueur pour getcwd):

char* a_cwd = getcwd(NULL,0);
string s_cwd(a_cwd);
free(a_cwd); //or delete a_cwd? 

source d'informationauteur rubenvb