Nous avons une classe où nous déclarons boost::lockfree::queue
en tant que membre de données static
et remplacer l'opérateur new
et delete
. La logique dans l'opérateur new
/delete
est de créer une instance de classe pour obtenir/mettre un pointeur d'un objet dans la file d'attente.boost :: lockfree :: queue en tant que membre de données statiques
Le problème est qu'après que les cas de test se termine ce qui est réussi, j'obtiens une erreur de segment. Si je commente l'instruction delete arr[i]
, la panne ne se produit plus. Mon hypothèse est que la file d'attente Boost est statique, donc le membre de données sera détruit en dernier ou son propre destructeur sera appelé quand le programme doit se terminer mais je ne suis pas sûr de ce qui est dans son destructeur qui provoque l'abandon ou donne un défaut de segmentation.
Des pointeurs seraient-ils vraiment utiles pour résoudre le problème?