合集-C++系列

C++性能优化 —— __builtin_prefetch()数据预读
摘要:C++性能优化 —— __builtin_prefetch()数据预读 References __builtin_prefetch() Prefetching with __builtin_prefetch Data Prefetch 数据预取 数据预读对二分查找的优化 你见过哪些令你瞠目结舌的C/ 阅读全文

posted @ 2023-02-02 14:38 七昂的技术之旅 阅读(4404) 评论(0) 推荐(0)

C++性能优化——likely和unlikely分支预测
摘要:C++性能优化——likely和unlikely分支预测 References C++之likely和unlikely C++ likely-unlikely-directives 一、背景知识:流水线技术 现代CPU为了提高执行指令执行的吞吐量,使用了流水线技术,它将每条指令分解为多步,让不同指令 阅读全文

posted @ 2023-02-03 10:10 七昂的技术之旅 阅读(2000) 评论(0) 推荐(1)

C++: 智能指针的自定义删除器 `Custom Deleter` 有什么用?
摘要:C++11智能指针std::shared_ptr和std::unique_ptr都支持自定义删除器,本文将介绍自定义删除器的使用场景和使用方法。智能指针模板参数的第二个类型是删除器,一般是一个函数指针类型或者是一个函数对象类型。通常情况下,删除器的类型是std::default_delete<T>, 阅读全文

posted @ 2023-12-16 13:40 七昂的技术之旅 阅读(945) 评论(0) 推荐(0)

C++ shared_ptr是线程安全的吗?
摘要:导读:C++面试中有时会有这样一个问题,shared_ptr是线程安全的吗?对此问题,我们需要从三个并发场景进行考虑,拷贝shared_ptr的安全性、对shared_ptr赋值的安全性和读写shared_ptr指向内存区域的安全性。 对于以上问题,首先给出以下结论: 如果多个线程同时拷贝同一个sh 阅读全文

posted @ 2023-11-22 00:41 七昂的技术之旅 阅读(2289) 评论(0) 推荐(1)

C++ weak_ptr除了解决循环引用还能做什么?
摘要:C++: weak_ptr到底有什么用? 很多人对std::weak_ptr的认识只是不增加std::shared_ptr的引用计数,可以用来解决std::shared_ptr可能造成的循环引用问题。但是,实际对它的认识还是不够深刻,本文将从几个实际应用场景讲解,深入了解这种智能指针。比如,你是否知 阅读全文

posted @ 2023-11-20 00:35 七昂的技术之旅 阅读(1415) 评论(0) 推荐(1)

C++ | 每一个C++程序员都应该知道的RAII
摘要:导读:RAII是C++中一种管理资源、避免资源泄漏的惯用法,利用栈的特点来实现。本文较为详细介绍了RAII的原理、使用方法和优点,并且通过实例讲解了RAII在C++ STL中的应用,如智能指针和互斥锁等,在最后进行了编程实践。本文适合对C++编程有一定了解的开发者阅读。 1. 什么是RAII RAI 阅读全文

posted @ 2023-10-29 14:21 七昂的技术之旅 阅读(524) 评论(0) 推荐(1)

C++ : 仅添加一个引用& 就直接导致程序崩溃
摘要:问题描述 在项目某次开发中,测试过程中出现了coredump问题。经过asan工具检测,报了heap-use-after-free内存错误,最终定位到竟是无意中添加了一个引用&导致的! 开发时因为看到相关类访问类成员的接口函数未返回引用,而是返回了一个拷贝,因此想着要将返回值改为引用,避免多余的拷贝 阅读全文

posted @ 2024-06-07 00:24 七昂的技术之旅 阅读(260) 评论(0) 推荐(0)

C++: 如何高效地往unordered_map中插入key-value
摘要:C++: unordered_map 花式插入key-value的5种方式 前言 无意中发现std::unordered_map、std::map等插入key-value对在C++17后竟有了 insert() 、operator[] 、 emplace() 、 try_emplace() 和 in 阅读全文

posted @ 2024-06-07 00:23 七昂的技术之旅 阅读(1063) 评论(0) 推荐(0)

C++: 虚函数,一些可能被忽视的细节
摘要:C++: 虚函数,一些可能被忽视的细节 引言:关于C++虚函数,对某些细节的理解不深入,可能导致我们的程序无法按预期结果运行,或是表明我们对其基本原理理解不够透彻。本文详细解答以下几个问题:实现多态,忘记写virtual会怎么样?虚函数的默认参数可以重载吗?纯虚函数真的不能有实现吗?析构函数可以是纯 阅读全文

posted @ 2024-03-31 13:45 七昂的技术之旅 阅读(318) 评论(0) 推荐(0)

C++ vector 访问元素用 at 和 [] 有什么区别?
摘要:C++ vector 访问元素用 at and [] 有什么区别? 前言: 最近同事开发过程遇到了一个奇怪的coredump问题,崩溃位置和提交改动没有任何关系,看了几小时后来才发现原来是vector越界访问了,使用了[]越界访问元素。在此,记录一下at()和[]的区别,便于日后可以更快速地定位问题 阅读全文

posted @ 2024-01-19 00:06 七昂的技术之旅 阅读(940) 评论(0) 推荐(0)

为什么C++ 单例局部static初始化是线程安全的?
摘要:为什么C++ 单例局部static初始化是线程安全的? const bg::AppSettings& bg::AppSettings::GetInstance() { static AppSettings instance; return instance; } 对于以上单例模式代码,在 C++11 阅读全文

posted @ 2024-01-14 19:24 七昂的技术之旅 阅读(525) 评论(0) 推荐(0)

C++源码中司空见惯的PIMPL是什么?
摘要:前言: C++源码中司空见惯的PIMPL是什么?用原始指针、std::unique_ptr和std::shared_ptr指向Implementation,会有什么不同?优缺点是什么?读完这篇文章,相信你能搞懂这种设计方式并将其运用于实践,也将更容易阅读源码。 1. PIMPL是什么? PIMPL是 阅读全文

posted @ 2024-01-13 22:51 七昂的技术之旅 阅读(692) 评论(0) 推荐(0)

万字长文全面详解现代C++智能指针:原理、应用和陷阱
摘要:现代C++智能指针详解:原理、应用和陷阱 智能指针是C++11引入的新特性。本篇文章详细介绍了C++智能指针的原理、应用与陷阱,通过丰富的代码实例介绍了三种智能指针:std::unique_ptr、std::shared_ptr和std::weak_ptr的原理、使用方法和适用场景,还介绍了智能指针 阅读全文

posted @ 2023-12-18 14:38 七昂的技术之旅 阅读(6155) 评论(0) 推荐(5)

C++ 高效使用智能指针的8个建议
摘要:C++ 高效使用智能指针的8个建议 前言:智能指针是C++11提供的新特性,它基于RAII实现,可以自动管理内存资源,避免内存泄漏的发生,但是智能指针也并不是万能的,如果不正确使用智能指针,也会导致内存泄漏的发生,因此,我们需要了解如何高效使用智能指针避免一些可能的陷阱。本文总结了8个关于智能指针的 阅读全文

posted @ 2023-12-16 13:40 七昂的技术之旅 阅读(1177) 评论(0) 推荐(1)

C++ : 如何用C语言实现C++的虚函数机制?
摘要:前言 在 googletest的源码中,看到gtest-matchers.h 中实现的MatcherBase 类自定义了一个 VTable,这种设计实现了一种类似于C++虚函数的机制。C++中的虚函数机制实质上就是通过这种方式实现的,本文用c语言自定义虚函数表VTable实现了一下virtual的功 阅读全文

posted @ 2024-06-30 21:27 七昂的技术之旅 阅读(302) 评论(0) 推荐(0)

C++: 16个基础的C++代码性能优化实例
摘要:前言 近期推动项目屎山代码进行了一波性能优化,实现了较大的性能提升。这里记录了部分近期代码优化的小技巧,这些例子仅从C++语言层面进行优化,主要在于优化类设计、减少隐含函数调用、减少拷贝等,较为基础实用,但涉及的知识点并不少。本文提供了一个视角,可以帮助了解一些C++代码的不同写法性能开销差异。对于 阅读全文

posted @ 2024-06-27 00:29 七昂的技术之旅 阅读(1437) 评论(0) 推荐(0)

C++ std::shared_ptr自定义allocator引入内存池
摘要:当C++项目里做了大量的动态内存分配与释放,可能会导致内存碎片,使系统性能降低。当动态内存分配的开销变得不容忽视时,一种解决办法是一次从操作系统分配一块大的静态内存作为内存池进行手动管理,堆对象内存分配时从内存池中分配一块类对象大小的内存,释放时并不实际将内存归还给操作系统,而是交给自定义的内存管理 阅读全文

posted @ 2024-08-07 01:09 七昂的技术之旅 阅读(1092) 评论(0) 推荐(0)

C++17: 用折叠表达式实现一个IsAllTrue函数
摘要:前言 让我们实现一个 IsAllTrue 函数,支持变长参数,可传入多个表达式,必须全部计算为true,该函数才返回true。 本文记录了逐步实现与优化该函数的思维链,用到了以下现代C++新特性知识,适合对C++进阶知识有一定了解的人。这样一种从实际问题来学习和运用知识的过程还是挺有趣的,特此整理分 阅读全文

posted @ 2024-09-08 22:40 七昂的技术之旅 阅读(618) 评论(0) 推荐(1)

导航