Die Methode liefert nichts zurück trotz return!!



  • Hi!

    Ich habe folgendes Problem:

    Ich rufe in meine Methode eine C Funktion auf.

    C Funktion: nvramGetSerialNumber(serialNumber)

    Wenn ich diese Methode ausserhalb aufrufe, dann kommt die Methode
    nicht mehr zurück!! Wenn ich die Funktion weglassen würde, dann
    funktioniert es!

    Z.B. return "Test";

    Ausserhalb: const char* str = itronix.getSerialNumber();

    Ab hier läuft das Programm nicht mehr weiter!! Es hängt!!

    const char*
    ItronixControl::getSerialNumber()
    {
    TCHAR serialNumber[11] = {0};

    char buffer[11] = {0};

    int size = sizeof(serialNumber) / sizeof(serialNumber[0]);

    if(! nvramGetSerialNumber(serialNumber))
    return SERIAL_NUMBER_NOT_FOUND_ERROR;

    for(int i = 0; i < size; ++i)
    {
    buffer[i] = char(serialNumber[i]);
    }

    return _strdup((const char 😉 buffer);
    }

    Vielen Dank 🙂



  • ka obs der fehler ist, aber du gibts ein pointer zurück auf eine lokale variable, am ende der funktion wird serialNumber und buffer freigegeben, wenn du durch den pointer drauf zugreifst ist das verhalten undefiniert.



  • Nö, es wird ein Pointer, der von _strdup zurückgegeben wird, zurückgegeben.



  • Hi!

    Ich habe das Problem gelöst, indem ich TCHAR serialNumber[11] in
    TCHAR serialNumber[50] geändert habe!!

    Strange Strange 🙂


Anmelden zum Antworten