做出有根据的猜测,因为您发布的代码有几个问题。我假设你遇到的问题是你正在推进你的队列 Data d 在内存中分配它之前:
Data d
Data *d; std::queue<Data*> my_queue; my_queue.push(d); d = new Data(); my_queue.pop();
以上是错误的,因为在队列中你正在推送副本 d 不 d 。相反,以下是正确的:
d
Data *d; d = new Data(); std::queue<Data*> my_queue; my_queue.push(d); ... my_queue.pop();
现在的副本 d 在队列中推送指向分配的内存。