ADO et la mémoire...

cybermax62 Messages postés 54 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 10 janvier 2006 - 30 juil. 2004 à 09:07
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 30 juil. 2004 à 12:17
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

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
30 juil. 2004 à 10:44
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 juil. 2004 à 11:02
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++
0
cybermax62 Messages postés 54 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 10 janvier 2006
30 juil. 2004 à 12:08
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...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 juil. 2004 à 12:17
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++
0
Rejoignez-nous