Borland Builder: MySQL -> Fehler beim löschen von Object MYSQL_RES *result;



  • Hallo.
    Erstmal entschuldigung, das ich im falschen forum poste. Aber im BCB forum kann ich nicht posten, da läds die buttons Absenden & Vorschau nicht. Ich bitte euch diesen Thread zu verschieben.

    Ich habe ein rießiges Problem:
    Mein Programm greift über die MYSQL LIB auf eine SQL Datenbank zu.
    Das klappt auch...

    Allerdings tritt immer wieder eine Zugriffsverletzung beim ausführen der Zeile "delete result;" statt.
    Allerdings nicht immer sondern immer mal wieder (ich konnte kein muster erkennen).
    Der Fehlertext lautet:
    "access violation at address 011943BB in module 'BORLNDMM.DLL'. Read of Address 01E45A74'"

    Mein code sieht so aus:

    MYSQL_RES *result;
    
    ...
    
    result = mysql_store_result(connection);
    
    iNumFields = mysql_num_fields(result);
    mfFields = mysql_fetch_fields(result);
    ...
    
    delete result;
    delete connection;
    


  • ich hab zwar keine Ahnung von Borland C++^^ aber wenn das so seh: darfst du das Objekt einfach löschen? Sieht so aus als würde es an andere Stelle gelöscht werden und beim zweiten mal gibts dann den Fehler ... . Is jetzt wie gesagt einfach mal geraten ...



  • Ich denk mal es ist auch kein builder spezifisches problem.

    Das dachte ich mir auch, dass es deher kommt, das das objekt vorher gelöscht wird.
    Das Problem ist, ich kann ja nicht prüfen, ob das objekt noch besteht.

    Wenn ich folgendes mache tritt der fehler trotzdem auf.

    if (result != NULL) {delete result; result = NULL);
    

    wenn ich das "delete result;" einfach weg lass steigt der Speicherverbrauch...da kann man im taskmanager richtig zuschauen.

    n try ... catch block hat auch nix geholfen



  • Kann den Beitrag bitte jemand ins BCB forum verschieben ? Der fehler tritt schliesslich in einer bcb dll auf.



  • Gibt's heir keine Moderatoren ???



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum VCL/CLX (Borland C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • FrankiBoy schrieb:

    Ich denk mal es ist auch kein builder spezifisches problem.
    [...]
    Kann den Beitrag bitte jemand ins BCB forum verschieben ?

    Was denn nun?

    Der fehler tritt schliesslich in einer bcb dll auf.

    Ja logisch, schliesslich erstellst du dein Programm mit dem BCB und verwendest die dort mitgelieferten Speicherverwaltungsroutinen. Das heisst aber immer noch nicht, dass das ein Borland-spezifisches Problem ist.

    Ausserdem ist dein Code-Ausschnitt offenbar unvollständig. Wo reservierst du denn den Speicher, den du mit delete wieder freigeben willst?



  • result sollst du nicht mit delete löschen.
    result ist ja ein Zeiger auf ein Ergebnisarray, das von der MySQL-Lib verwaltet wird. Um ein result wieder frei zu geben, gibts die Funktion mysql_free_result(result);


Anmelden zum Antworten