检查课程是否具有空灾难
Check if class has an empty destructor
假设我有一个类似:
的类struct A {
public:
A(int a, int c): a_(a+c), c_(a-c) { }
A(const A& arg): a_(arg.a_), c_(arg.c_) { }
int a_;
char c_;
};
该类的对象位于某些题分配的内存区域内。在释放此内存区域期间,不应该称呼攻击器。因此,我想确保攻击者确实是空的。例如,如果有人会在A类中添加std::string s_;
成员,那么如果不调用Destructor,显然将是一个内存泄漏。
如果A中没有构造函数和复制构造函数,我可以添加检查:
static_assert(std::is_trivial<A>::value)
但是,对于A类,它将失败。
所以我的问题:我可以以某种方式在编译时间检查一下,如果此类班级的破坏者真的很空,没有任何工作?
这就是std::is_trivially_destructible
的目的:
std::is_trivially_destructible<A>::value
确保到#include <type_traits>
。
相关文章:
- 如何检查线程是否锁定
- 并发/多线程:是否可以以这种方式生成相同的输出?
- 当我在C++中调用 struce 的只读静态成员时,线程是否安全
- 检查分离的线程是否还活着?
- 将正常函数的工作分配给多个线程是否安全
- 最大线程数 - 如何确定C++线程是否并行运行?
- 如何确定其他线程是否正在运行?
- 线程是否真的在调用 std::future::get() 后启动
- 主线程是否在阻塞线程上运行?
- 如何知道分离的STD ::线程是否完成了执行
- 通知线程是否始终需要在修改期间锁定共享数据
- 只写到共享 std::unordered_map 线程是否安全
- 提升协程是否在 Windows x86_64 上不起作用
- 检查线程是否在 c++11 中完成
- C++ 互斥 - 检查另一个线程是否正在等待
- 提升::作用域的线程是否自动分离
- 以下单例实现线程是否安全?
- 确定线程是否已退出
- 我的不同线程是否会看到更新后的shared_ptr对象
- boost::thread_group中的所有线程是否共享关于boost::recursive_mutex的相同线程