Se connecter / S'enregistrer
Votre question
Résolu

_ASSERTE ( _CrtIsValidHeapPointer( pUserData ) );

Tags :
  • Programmation
  • c++
  • Base de données
Dernière réponse : dans Programmation
17 Août 2016 12:38:31

Bonjour à tous,

Je suis en train d'avancer sur un projet où il sera question de récupérer des valeurs dans une base de données, et de les afficher dans une interface graphique (entre autres).

Chacun des blocs du projet fonctionne correctement isolé, mais dés que je regroupe tout, et que je compile (sans erreur), j'obtiens au lancement un message d'erreur qui me renvoie à cette fonction _ASSERT dans un fichier dbgheap.cpp.*





Au fait je viens de localiser le problème,

L'erreur intervient au moment où je définis mon accès à la base de données

  1. _bstr_t bstrConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\CONFIGURATION_OSMOSE_V03.accdb;";


Pourtant quand je lançais chaque partie indépendemment, j'avais bien accès à la base de données sans message d'erreur ni rien...

Autres pages sur : asserte crtisvalidheappointer puserdata

Meilleure solution

a b L Programmation
17 Août 2016 21:24:53

Je pense qu'il y a un problème de gestion de mémoire dans le programme (dans la partie non "managé").
Comme c'est sur le tas (heap), c'est certainement un objet créé par un new (sur le tas donc), qui a été supprimé, mais qui est toujours utilisé.

En intégrant les différentes parties, tu es certainement tombé dans un tel cas (d'où l'importance des tests d'intégration ;)  ).

Je vois que ça s'exécute sur un atexit, alors c'est peut-être une double suppression de mémoire.
Si tu fais du multi-thread, vérifie bien tous les accès aux objets.

Si ça fonctionnait indépendamment, alors tu dois pouvoir isoler le problème en faisant différentes intégrations.

Bon courage. :) 
partage
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS