gpt4 book ai didi

C++ std::queue::pop() 调用析构函数。指针类型呢?

转载 作者:IT老高 更新时间:2023-10-28 22:22:58 28 4
gpt4 key购买 nike

我有一个 std::queue,它被包装为一个模板类以创建一个线程安全的队列。我有这个类的两个版本:一个存储值类型,一个存储指针类型。

对于指针类型,我无法在销毁时删除队列中的元素。原因是我不知道如何安全地从队列中移除项目。

This引用状态(空洞,所以我猜它实际上并没有说明它)从队列中删除元素的唯一方法是调用 pop()。该引用资料还说 pop() 调用该项目的析构函数。

嗯,这会导致我的指针类型出现问题,因为它们实际上可能指向聚合,也可能不指向聚合。如果其中一个指向聚合,它们都将指向聚合,但由于包装器是模板化的,因此无法保证我们正在处理哪种类型(聚合或非聚合)。

那么,当 pop() 调用析构函数时,会发生什么?如何确保所有内容都被删除并正确释放内存?

最后,我的解决方案是使用旧版本的 GCC for ARM9。我无法控制这个。我知道有些库有智能指针和容器可以在这里提供帮助,但它们对我来说是禁区。

最佳答案

指针它们自己实际上没有析构函数,因此在包含指针的队列上调用 pop() 不会调用指针指向的对象的析构函数.

关于C++ std::queue::pop() 调用析构函数。指针类型呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2002282/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com