C++
文章平均质量分 61
newchenxf
一个喜欢打球的搬砖员,一言不合就要拿砖头来投篮
展开
-
一种signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)的原因
`SIGTRAP` 的错误,指的是`函数没有返回值!`所以写C++代码,要小心,虽然没返回值能编译过,但是最终会运行崩溃。原创 2021-12-27 15:02:56 · 15378 阅读 · 1 评论 -
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR)的原因和解决办法
1 问题背景写好Android C++代码,运行起来崩溃,日志如下:11-25 15:07:25.546 24467 24527 E glesdemo: ReadMissingBones, m_BoneInfoMap address 0x7e70ed0f88, size 5211-25 15:07:25.554 24467 24527 E glesdemo: GetBoneIDMap, m_BoneInfoMap size 011-25 15:07:25.654 24718 24718 I原创 2021-11-25 15:39:39 · 41517 阅读 · 5 评论 -
C++ 多任务的线程同步方案
先说明一下标题,多任务的线程同步方案,具体指的是,希望多个任务在同一个线程执行,避免操作同一个资源啥的,发生冲突。经常写JAVA的人,会发现JAVA要做线程同步,真是太容易了。以Android开发为例子,有个UI主线程,我们可以随便抛出一个Runnable,放在主线程执行。例如mView1.post(new Runnable() { @Override public void run() { //任务1原创 2021-06-28 16:18:27 · 351 阅读 · 0 评论 -
C++的std::move与std::forward原理大白话总结
阅读大型的C++开源项目代码,基本逃不过std::move和std::forward,例如webRTC。所以搞懂其原理,很有必要。网络上已有不少文章介绍(见@参考),但是比较分散,所以我把自认为的关键点,加上一些自己的想法,提取总结一下。1. std::move别看它的名字叫move,其实std::move并不能移动任何东西,它唯一的功能是将一个左值/右值强制转化为右值引用,继而可以通过右值引用使用该值,所以称为移动语义。1.1 函数原型函数定义原型:/** * @brief Conve原创 2021-06-18 18:28:12 · 7742 阅读 · 5 评论 -
C++的左值 右值 左值引用 右值引用 大白话总结
1. 前言对左值,右值,左值引用,右值引用,总是记得又忘记,忘记再放弃,放弃再学习。于是把之前学习的内容,做一个简单的总结。希望自己和看到文章的你,下次能够快速想起。首先,在C++11中所有的值,要么左值,要么右值。而左值引用,右值引用,都是引用,只不过一个爱上了左值,一个爱上了右值。接下来详细说明之。2. 左值 右值C++对于左值和右值没有标准定义,但是有一个被广泛认同的说法:(a) 可以取地址的,有名字的,非临时的就是左值;(b) 不能取地址的,没有名字的,临时的就是右值;可见立即数,原创 2021-06-17 15:38:37 · 456 阅读 · 1 评论 -
C++ 智能指针unique_ptr原理与自定义实现
分析智能指针最常用的,就是shared_ptr和unique_ptr。第一个,我在另一个文章已介绍(https://blog.csdn.net/newchenxf/article/details/116019535)。本文来单独说以下unique_ptr。先说其特点:独享它指向的对象。也就是说,同时只有一个unique_ptr指向同一个对象,当这个unique_ptr被销毁时,指向的对象也随即被销毁。这也是它和shared_ptr不一样的地方。它不需要做引用计数,也不可以被第二个人引用。只有它自己。原创 2021-04-29 18:47:22 · 5889 阅读 · 0 评论 -
C++ 智能指针shared_ptr原理与自定义实现
C++的智能指针,让码农们不再new一个对象,就要想这什么时候调用delete,真的是香。那么,既然香,它的原理是啥呢?根据其头文件,这里实现一个简化版的智能指针,更容易理解其原理。智能指针shared_ptr,原理是,做引用计数,多一个引用就加1,少一个引用,就减去1,当引用计数为0,则认为没有人用了,就主动调用delete,完成对象释放。...原创 2021-04-23 11:21:12 · 1539 阅读 · 3 评论