![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 70
C/C++常见问题记录和分享。
工头阿乐
一起进步
展开
-
盘点17个C++17的高级特性
C++17是目前比较常用的版本之一,今天花时间来梳理一下17个重要特性,所有的特性也不止这么点。原创 2024-06-12 16:30:39 · 795 阅读 · 0 评论 -
boost.circular_buffer的使用和介绍
如果达到容量上限,继续push_back方法压入元素时,原来begin处的元素就会被覆盖,原来begin + 1处的元素成为新的begin,push_front功能类似。这几种方式都有各自的缺点:用list构造无法实现随机访问,用vector构造移动数据头开销较大,用数组构造需要维护数据头指针和防止计数器溢出,计算位置和数据的移除也相对较麻烦。也就是说,circular_buffer的内部还是通过数组来实现,只不过给我们做好了封装工作,提供了vector类似的接口,用起来非常简便。原创 2024-01-17 10:27:43 · 972 阅读 · 0 评论 -
Ubuntu开启生成Core Dump的方法
Ubuntu下无法生成Core Dump解决方法。原创 2023-08-30 10:36:45 · 1409 阅读 · 0 评论 -
pthread_sigmask使用详解
对于线程信号,你应该忘记signal / sigaction ,他们只为单进程单线程设计pthread_sigmask 跟 sigprocmask 类似;sigprocmask 只能用于单进程单线程;fork的子进程拥有一份屏蔽信号拷贝;pthread_sigmask 用于多线程;新线程拥有一份pthread_create那个线程的屏蔽信号拷贝;对于线程信号的处理 , 最好还是用一个线程来统一处理比较, 否则太乱啦!关于线程安全和可重入, 完全2个概念:线程安全 可重入。原创 2023-08-01 17:15:37 · 1089 阅读 · 0 评论 -
线程安全和函数可重入
这意味着, 在main中gethostbyname的调用刚执行完或者只执行了一半, 此时signal来了, 转到sig_handler继续调用gethostbyname ,由于实现是一个静态变量,因此后调用gethostbyname将把前一次的数据覆盖.可重入函数只有在signal下会发生, 比如一个函数在执行时被中断, 在中断处理函数中又一次被调用, 这2次(每次)调用都能产生正确的结果,那就个可重入函数;一个函数中如果使用了静态/全局变量, 那他基本是一个不可重入的函数,当然具体还是看实现;原创 2023-08-01 14:00:10 · 136 阅读 · 0 评论 -
bazel构建C++ 动态链接库so文件
bazel是Google开源的一款编译工具,具有支持多种语言,编译速度快,处理依赖方便,编写编译规则简单的优点。有人说,bazel是流氓工具,为什么呢?因为它不仅QJ你们组,还QJ你的兄弟组。意思是说一个组用了bazel,其他组为了协同工作,也必须用bazel,否则作为一个项目整体没法管理。这在一定程度上是对的,因为一个项目想打包成一个整体,如果其中一部分使用bazel编译,另外一部分写makefile编译,那么这两个部分没法生成一个完整的动态链接库给外界使用。原创 2023-06-26 11:19:40 · 951 阅读 · 0 评论 -
C++11 make_shared函数和std::make_unique详解
如果使用std::unique_ptr和std::make_unique来替换std::shared_ptr和std::make_shared,事实上,会用到同样的理由。这样通过std::shared_ptr的make函数分配的函数则在最后一个std::shared_ptr和最后一个std::weak_ptr被销毁前不能被释放。假如我们把std::shared_ptr和std::make_shared替换成std::unique_ptr 和std::make_unique,会发生相同的事情。原创 2023-04-18 18:10:49 · 4278 阅读 · 0 评论