ADO et la mémoire...

Signaler
Messages postés
54
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
10 janvier 2006
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
J'utilise ADO dans mon prog. J'ai aucun soucis pour l'utiliser, le problème n"est pas encore là. Mais vu que mon prog est très axé graphique avec directX, la mémoire est vite consommée.
J'ai remarqué qu'en utilisant la DLL, ADO avec la directive #import (celle que j'ai toujours utilisée) la conso en mémoire augmente de 6Mo (visible dans le gestionnaire des processus).

Dans l'aide MSDN, j'ai lu que avec #import la DLL n'est pas vraiment chargée comme à l'habitude, mais plutôt compilé en un autre fichier de type library (*.tlh et *.tli) utilisé celui ci par le prog véritablement et les fonctions de ADO.

Existe il une façon de libérer de la mémoire cette DLL puisque en fait je ne l'utilise que très peu.seulement 4 ou 5 accès au maximum dans tout le prog.

Merci d'avance

4 réponses

Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
a la rigeur tu peux importer ta DLL et la liberer a chaque fois que tu as fin LoadLibrary / FreeLibrary mais ca impose de charger dynamiquement les fonctions
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
wargre > Nenni chargement dynamique, ADO ne s'utilise qu'a travers d'interfaces COM.

cybermax62 >
#import ne change QUE dans la maniere d'ecrire le prog, a la finale c'est idem.
Si vraiment tu veux tout liberer, reprends l'idee de Wargre, fais une dll perso que tu charges en dynamique, qui fait le travail avec ADO, et ensuite tu liberes ta dll par FreeLibrary.
Ceci dit, je n'ai jamais eu de problemes memoire avec ADO, verifie bien que tu liberes correctement tes pointeurs (_ConnectionPtr, _RecordsetPtr etc...).

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
54
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
10 janvier 2006

libérer les pointerus ???
je fais juste le pRs->Close(),pConn->Close() et ::CoUninitialize() à la fin.
J'ai essayé de faire delete sur ces pointeurs mais ca change pas grand chose.
De même j'utilise un variant et de bst, mais statique ou dynamique c quasi identique.

J'ai vraiement l'impression que ce vient du type de chargement de la DLL avec #import...

tant pis...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Alors tout est bien libere, le systeme devrait recuperer la memoire pour un autre prog si besoin.
Essaie avec dll comme dit plus haut pour voir.

ciao...
BruNews, Admin CS, MVP Visual C++