Je reçois une erreur de corruption du tas lors de la suppression d'un pointeur. Pour ce projet, le paramètre de liaison pour l'adresse de base aléatoire est défini sur Désactiver la randomisation d'image. Je ne sais pas pourquoi c'est réglé comme ça. De toute façon, je reçois seulement cette erreur quand un fichier d'en-tête spécifique d'une bibliothèque est inclus. La chose étrange est que même avec ce fichier d'en-tête inclus, si l'adresse de base aléatoire est définie sur Activer la randomisation d'image, l'erreur n'apparaît pas. Donc, y a-t-il vraiment une corruption de tas ou devrais-je juste changer le paramètre de liaison?Erreur de corruption du tas lors de la suppression d'un pointeur
Répondre
L'adresse de base aléatoire indique si la bibliothèque doit toujours être chargée à la même adresse. La randomisation fournit un certain niveau de sécurité pour empêcher les exploits d'appeler/modifier le code.
Il est presque certain qu'il existe un problème de tas dans votre projet, et très probablement sans rapport avec l'en-tête inclus. Les chances sont que l'en-tête introduit un symbole qui utilise le tas corrompu, causant le problème. De même, lors de la randomisation de l'adresse de base, votre tas est toujours corrompu, mais le problème ne se manifeste jamais de manière visible (même si les choses fonctionnent légèrement incorrectement).
Si vous êtes en mesure d'utiliser un vérificateur de mémoire ou un allocateur de débogage qui pourrait être en mesure de vous aider.
Sinon, malheureusement, sans code/plus d'informations, il sera très difficile de vous donner des conseils supplémentaires.
Avez-vous des chances de supprimer via un pointeur de base? Si c'est le cas, assurez-vous que la classe de base définit un acteur virtuel. – stinky472
C'est généralement (et presque toujours) un problème avec votre code et pas avec les paramètres du compilateur ou les en-têtes du système. Vous avez probablement écrasé un peu de mémoire quelque part, et par chance, il n'a pas atteint les parties critiques du système en n'incluant pas certains en-têtes ou en utilisant des paramètres spécifiques du compilateur. Plus d'informations, telles que des exemples de code seraient utiles ici. – 5ound
Postez le code de la classe. –