C ++ std :: queue :: pop () chama o destruidor. Qual dos tipos de ponteiro?
eu tenho umstd::queue
que é empacotado como uma classe de modelo para fazer uma fila de thread-safe. Eu tenho duas versões desta classe: uma que armazena tipos de valor, um que armazena tipos de ponteiro.
Para o tipo de ponteiro, estou tendo problemas para excluir os elementos da fila na destruição. O motivo é que não sei como remover os itens da fila com segurança.
este estados de referência (vago, então eu acho que não realmente dizer) que a única maneira de remover elementos da fila é chamarpop()
. A referência também diz quepop()
chama o destruidor para o item.
Bem, isso causa problemas com meus tipos de ponteiro porque eles podem ou não realmente apontar para agregados. Se um deles apontar para um agregado, todos eles serão, mas como o wrapper é modelado, não há garantia de qual tipo (agregado ou não agregado) estamos lidando.
Então quandopop()
chama o destruidor, o que acontece? Como posso garantir que tudo está sendo removido e a desalocação de memória corretamente?
Por fim, minha solução está usando uma versão mais antiga do GCC para o ARM9. Eu não tenho controle sobre isso. Eu entendo que existem bibliotecas que têm ponteiros e contêineres inteligentes que ajudariam aqui, mas estão fora dos limites para mim.