IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[VC6]Problème mémoire avec BDE


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut [VC6]Problème mémoire avec BDE
    Bonjour,

    Mon logiciel peut utiliser à plusieurs reprises le moteur BDE via des appels comme DbiCreateInMemTable, DbiCreateTable, DbiQAlloc, DbiQPrepare, DbiQExec, ...
    J'expose mon problème... Après 2 grosses manipulations des fonctions du logiciel (sans redémarrer le logiciel), j'obtiens une erreur avec DbiQExec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur #9473 : Mémoire insuffisante pour cette opération
    Et ça bloque les traitements suivants, ainsi que les autres fonctions utilisant BDE (les principales malheureusement). Si on redémarre le logiciel, tout revient à la normale.

    J'ai essayé de corriger le soucis en modifiant les données du BDE Admin.
    En changeant les valeurs INIT "MINBUFSIZE" (à 2048) et "MAXBUFSIZE" (à 4096), ça ne change rien.
    Idem pour "BLOCK SIZE" de Paradox.

    Comme la plupart des projets que je développe ou maintient, celui-ci est écrit en C et non C++. Je sais que ça n'a normalement aucun rapport avec le langage ou le compilateur utilisé mais sait-on jamais.

    Est-ce que quelqu'un aurait une idée ?
    Merci.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    peut etre qu'une des allocations demandées est hors norme ...

  3. #3
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Merci pour ta réponse rapide.
    Tu veux parler de l'allocation du via DbiQAlloc ? Ou dans le BDE Admin ?

    Au fait, j'avais oublié de dire que les 2 grosses manipulations pouvaient venir de la même fonction du logiciel.

  4. #4
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Bon apparemment ça n'avait rien avoir avec le DBE...

    Mon prédescesseur avait très mal codé une fonction. Ca revenait à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    HGLOBAL hTemp;
    hTemp = GlobalAlloc(GHND, cSize);
    if (hTemp == NULL)
    	return(FALSE);
    GlobalUnlock(hTemp);
    GlobalFree(hTemp);
    return(TRUE);
    Ce qui veut dire : pas de GlobalLock.
    Le pire , c'est que ce handle hTemp ne servait à rien dans la fonction.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par Vow
    il manquait aussi le GlobalFree(hTemp); dans if (hTemp == NULL)
    Euh... Pourquoi faire un GlobalFree() si l'allocation a échoué?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Autant pour moi, j'ai fumé sur ce coup-là
    Je rectifie le tir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème mémoire avec shapes
    Par LEF97 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/03/2013, 13h26
  2. Problème mémoire avec InternetOpenUrl
    Par laetus dans le forum C++Builder
    Réponses: 0
    Dernier message: 06/09/2007, 08h23
  3. Problème de mémoire avec BDE
    Par Machuet dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 10h11
  4. Problémes mémoire avec le bde sur des bases paradox
    Par Keke des Iles dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/05/2004, 16h55
  5. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo