Dies ist wahrscheinlich eine Frage, aber ich weiß nicht einmal, wofür man googeln soll.Struct wird auf Null gesetzt, wenn die Funktion abläuft?
Ich versuche, eine Sicherung Dateisystem zu implementieren und zu Schwierigkeiten beim structs habe, stammt wahrscheinlich von mir mit C++ unerfahren zu sein.
static int getStat(std::string path, struct stat *stout)
{
...
struct stat *st = new struct stat();
lstat(path.c_str(), st);
// lstat correctly filled st according to gdb
...
stout = st;
// values are correctly copied to stout according to gdb
}
void something()
{
struct stat *st = new struct stat(); // this might also be stack allocated by fuse, idk
getStat("/", st);
// but st is all zero now !?
}
Was fehlt mir? Wie bekomme ich meine Daten korrekt aus der Funktion?
Nicht sicher, ob Sie es weggelassen haben oder nicht, aber beachten Sie, dass 'getStat' einen Wert zurückgeben muss, sonst haben Sie UB. – NathanOliver
Und es gibt auch ein mögliches Speicherleck, wenn Sie die Struktur nicht löschen, bevor Sie "stout" zuweisen und neu zuweisen. –
Geben Sie keine Statistik auf dem Heap (nicht neu)! Ordnen Sie auf dem Stapel zu und übergeben Sie die Adresse an lstat. –