protokolieren



  • void WriteLog(char *szMessage, ...) {
    FILE *hFile;
    char *szString = new char[0x400];
    ::memset(szString, 0, sizeof(char) * 0x400);
    va_list vaArgs;

    va_start(vaArgs, szMessage);
    vsprintf(szString, szMessage, vaArgs);
    va_end(vaArgs);

    char *szOutput = new char[0x400];
    ::memset(szOutput, 0, sizeof(char) * 0x400);
    sprintf(szOutput, "%s", szString);

    char *buffer = new char[];
    char dateStr [9];
    char timeStr [9];

    _strdate( dateStr);
    _strtime( timeStr );

    hFile = fopen("C:\\Log.txt","a");
    if(hFile) {
    sprintf(buffer,"%s -- %s: %s\n",dateStr,timeStr,szOutput);
    fputs(buffer,hFile);
    fclose(hFile);
    }

    delete szString;
    delete szOutput;
    }

    funktioniert nur 1-2 mal
    dann stürzt prog einfach ab

    ich machs so :
    WriteLog("1");
    WriteLog("2");
    WriteLog("3");

    geht nur bis 2 dannach crash...



  • Hallo

    Das hat nix mit C++ zu tun. Benutze doch mal bitte code-tags.

    chrische



  • wo zerstörst du "buffer" so nebenbei....



  • char *buffer = new char[]; // angelegt
    char dateStr [9];
    char timeStr [9];
    
    _strdate( dateStr);
    _strtime( timeStr );
    
    hFile = fopen("C:\\Log.txt","a");
    if(hFile) {
    sprintf(buffer,"%s -- %s: %s\n",dateStr,timeStr,szOutput); // uninitialisiert verwendet
    

    bei der letzten zeile knallts. ob nun im ersten, zweiten oder 20. durchlauf...



  • is doch klar das es knallt, bin grad nicht sicher ob das so ueberhaupt zulaessig ist

    char *buffer = new char[];
    

    du machst einen zeiger auf einen [] ? versteh ich nicht wirklich
    ich vermute das er nur einen anlegt, und da passt nunmal kein laengerer string rein
    mach das lieber so

    char *buffer = new char[anzahl_von_elementen];
    /*...*/
    delete [] buffer;
    

Anmelden zum Antworten