- 博客(10)
- 收藏
- 关注
原创 详谈“为什么智能指针推荐使用make_shared创建?为什么说使用make_shared是安全的?”
相信大家都听过使用mak_shared创建shared_ptr是安全的,那是如何保证安全的呢?
2024-11-27 15:53:00
532
1
原创 Qt中信号槽是线程安全的吗?如何保证线程呢?
Qt 中的信号槽机制以其强大的线程间通信能力而闻名,并且在多线程环境中被设计为线程安全。这种线程安全性使得开发者能够在不同线程间轻松传递信号和槽,而不需要担心线程同步的复杂性。
2024-11-16 20:49:06
767
原创 Qt事件循环和Asio事件循环为什么会造成冲突?
Qt 和 Asio 都是事件驱动的框架,它们的核心机制依赖于 事件循环。当你在同一个线程中使用 Qt 和 Asio 时,两者的事件循环会产生冲突,可以采用多线程分离事件循环或者结合定时器实现集成事件循环。
2024-11-16 16:44:42
547
原创 [c++]c++中的四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
c++中的四种类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast。
2024-07-06 20:23:16
474
原创 [c++]关于c++11的智能指针详细解析
C++11 引入了智能指针,以更好地管理动态分配的资源,主要包括std::shared_ptr:共享的智能指针std::unique_ptr:独占的智能指针std::weak_ptr:弱引用的智能指针智能指针通过 RAII(Resource Acquisition Is Initialization)原则,在超出作用域时自动释放资源,从而减少内存泄漏和悬挂指针的风险。智能指针的核心技术是,每次使用它一次内部引用计数加1,每析构一次内部引用计数减1,当为0时,释放原始指针指向的堆区内存。
2024-06-21 20:44:21
2029
原创 什么是虚假唤醒?如何解决虚假唤醒呢?
虚假唤醒(spurious wakeup)是指在多线程编程中,一个线程在等待某个条件变量时被意外地唤醒,而实际上并没有满足唤醒条件的情况。防止虚假唤醒:我们可以将条件判断的if换成while,这样线程就会被重复判断而不再会跳出判断代码块,从而不会产生虚假唤醒这种情况了。通过循环检查条件,确保线程在被唤醒后再次验证条件是否满足,从而防止虚假唤醒带来的问题。
2024-06-17 17:20:14
1244
1
原创 [c++]placement new(定位new运算符)用法及用途
定位 new 运算符(Placement new)是 C++ 提供的一种特殊的 new 运算符,它允许在已经分配的内存地址上构造对象。这在需要精细控制对象内存布局的高级应用中非常有用,例如内存池、嵌入式系统和实时系统。
2024-06-12 20:52:17
1901
原创 为什么构造函数不能声明为虚函数而析构函数可以?
构造函数不能声明为虚函数的原因:虚函数的调用是需要虚函数指针,而该指针存放在对象的内存空间。所以如果构造函数声明为虚函数,由于对象还未创建,还没有内存空间,更没有虚函数表地址来调用虚函数构造函数了。
2024-06-06 14:10:37
439
原创 [c++]关于c++11的function函数的使用:
C++11 引入了一个叫做 `std::function` 的函数封装器,它可以存储、复制和调用任何可调用对象(如函数、Lambda 表达式、成员函数指针等)。
2024-06-04 19:33:11
931
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人