我有一个std::queue
被包装为模板类以创建线程安全队列的方法。我有这个类的两个版本:一个存储值类型,一个存储指针类型。
对于指针类型,我无法在销毁时删除队列的元素。原因是我不知道如何安全地从队列中删除项目。
这个参考声明(空洞,所以我猜它实际上并没有声明它)从队列中删除元素的唯一方法是调用pop()
. 该参考资料还说pop()
调用了该项目的析构函数。
好吧,这会导致我的指针类型出现问题,因为它们实际上可能指向聚合,也可能不指向聚合。如果其中一个指向聚合,它们都会指向聚合,但由于包装器是模板化的,因此无法保证我们正在处理哪种类型(聚合或非聚合)。
那么,当pop()
调用析构函数时,会发生什么?如何确保所有内容都被删除并正确释放内存?
最后,我的解决方案是为 ARM9 使用旧版本的 GCC。我无法控制这个。我知道有些库有智能指针和容器可以在这里提供帮助,但它们对我来说是禁区。