C ++ std :: queue :: pop () appelle le destructeur. Qu'en est-il des types de pointeurs?

J'ai un std::queue qui est enveloppé basé sur un modèle de classe de faire un thread-safe file d'attente. J'ai deux versions de cette classe: l'un qui stocke les types de valeur, celui qui stocke les types de pointeur.

Pour le type de pointeur, je vais avoir de la difficulté à supprimer les éléments de la file d'attente de destruction. La raison en est que je ne connais pas un moyen de supprimer les éléments de la file d'attente en toute sécurité.

Cette référence unis (vacuously, donc je suppose qu'il ne fait pas ÉTAT) que la seule façon de supprimer des éléments de la file d'attente est d'appeler pop(). La référence dit aussi que pop() appelle le destructeur de l'objet.

Bien, cela provoque des problèmes avec mon pointeur types parce qu'ils peuvent ou ne peuvent pas réellement de point d'agrégats. Si l'un d'entre eux les points d'un ensemble, ils seront tous, mais parce que l'emballage est basé sur un modèle, il n'ya aucune garantie que le type (agrégés ou non-agrégées), nous avons affaire avec.

Donc, quand pop() appelle le destructeur, ce qui se passe? Comment puis-je m'assurer que tout est enlevé et la désallocation de la mémoire correctement?

Enfin, ma solution est d'utiliser une ancienne version de GCC pour ARM9. Je n'ai pas de contrôle là-dessus. Je comprends qu'il y a des bibliothèques qui ont des pointeurs intelligents et les conteneurs qui pourrait aider ici, mais ils sont hors-limites pour moi.

source d'informationauteur San Jacinto