
c++
浪子荆
致力于音视频的编码,解码,传输等。
展开
-
利用反汇编帮助查找段错误
当程序运行时经常会发生段错误,如果在linux系统,可以利用core dump文件,用gdb来帮助查找,前面已经有介绍过这种方法,如果不是linux系统,则很多时候不能使用gdb,则可以利用反汇编来查找出错的位置,一般段错误会打印出出错的指针位置,如下: Oops: Data Abort caused by READ instruction! Fault: Alignment fault pc原创 2017-11-15 15:19:36 · 1896 阅读 · 0 评论 -
c++11的bind函数
对于bind函数,默认bind进来的参数都是值传递,当需要传引用进来的时候,需要用ref()来修饰。例子如下:所以可以知道,bind默认都是值传递。lambda表达式捕获的时候是可以指定是引用捕获还是值传递,这点lambda比bind好一些。他们背后的原理其实都是一样的,都是形成了一个可调用对象,bind进来的参数或者lambda捕获的参数都存在于这个可调用对象里面。...原创 2019-10-25 14:19:29 · 405 阅读 · 0 评论 -
c++的继承关系总结
1.子类对象的指针可以直接赋值给父类的指针,但地址值可能会变化,也就是可能编译器给自动做了转换,具体可以看下面的例子。这也是最常规的用法。2.父类的对象的指针不能直接赋值给子类的指针,编译报错,可以需要强制转换来通过编译。这种用法一般用在创建的子类对象赋值给了父类的指针,再将父类的指针赋值给子类的指针。也就是该对象实际是子类的对象。如果是父类的对象,里面是不包含子类的内容的,所以不能强制转换为子...原创 2019-10-11 15:30:35 · 394 阅读 · 0 评论 -
c++各个cast强制类型转换函数总结
c++11增加了几个static_cast等强制类型转换函数,在强制类型转换时尽量使用,这里总结一下。原创 2019-02-20 20:50:28 · 2196 阅读 · 0 评论 -
常用linux调试方法(包括kernel和app)
当在linux编程中遇到segmentation fault的时候,可以利用core dump文件来debug,方法如下: 1. 在程序运行目录下(嵌入式设备最好是sdcard上面,因为core文件比较大)利用ulimit命令来修改core dump文件的大小。ulimit -a 可以查看ulimit命令的选项。会发现-c是core file size . 我们可以利用ulimit -c unli原创 2016-11-08 18:41:12 · 550 阅读 · 0 评论 -
c++编码规范
这里记录一些日常的c++编码的规范1.引用和指针的写法int value = 0;int &ref_val = value;//&要和变量名写在一起,表明ref_val是个引用int *p_val = &value; //*同样也要和变量名写在一起,表明p_val是个指针变量int i = 1024, *p = &i, &r = i;//上面两条规...原创 2019-02-16 18:50:18 · 200 阅读 · 0 评论 -
C++中const、constexpr, mutable的用法
这里有一片博客介绍这三种用法,暂时记录在这里,有空学习整理一下https://www.cnblogs.com/xkfz007/articles/2419540.html原创 2019-02-16 22:44:09 · 413 阅读 · 0 评论 -
JSON总结
有空学习总结一下JSON的格式,包含解析的方法等。 1.json的格式,这里有详细的介绍:https://www.runoob.com/json/json-tutorial.html 2.有很多用c/c++实现的json解析库,这个链接测评了很多json开源库的性能。https://www.oschina.net/news/61942/cpp-json-compare json-c库...原创 2018-03-30 16:55:09 · 172 阅读 · 0 评论 -
extern C的用法
经常c c++混合编程的时候,需要用到extern “C”的关键字,这里说明一下其原理: 由于c++为了支持面向对象编程,命名空间和函数的重载,定义了更加复杂的符号命名规则,因为c++的函数一般都是属于某个类,或者某个命名空间,为了唯一的标识函数,链接器在为函数入口点建立符号的时候,必须用某种方法来包含函数的从属信息。c++的重载机制允许同一个类的不同函数拥有相同的函数名和返回值,只是参数不同,所原创 2017-11-21 23:08:09 · 682 阅读 · 0 评论 -
宏定义中的##
2、#define D(a) cout << #a “=[” << a << “]” << endl;3、#是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串例如: define FOO(arg) my##arg 则 FOO(abc) 相当于 myabc例如: define STRCPY(dst, src) strc转载 2017-11-17 18:08:37 · 925 阅读 · 0 评论 -
互斥锁-条件变量-信号量总结
互斥锁:mutex 条件变量:condition: pthread_cond_signal() :保证唤醒一个线程的wait pthread_cond_broadcast() : 唤醒所有线程的wait pthread_cond_wait() : 等待条件变量的signal or broadcast。 条件变量不保存状态信息,signal时如果没有线程在等待,则会丢失该signal,如果原创 2017-08-31 09:29:55 · 2020 阅读 · 1 评论 -
Linux多线程并发总结
总结thread async future等并发的技术原创 2017-09-04 20:18:39 · 3839 阅读 · 0 评论 -
union内部的变量不能有构造函数
union内部包含的变量只能是纯c的struct,不能有构造函数,比如:struct data1 { uint32_t a = 0; uint32_t b = 0;};struct data2 { uint32_t a;};struct area { uint32_t num; union { data1 a; data2 b; }}如...原创 2017-08-11 19:48:15 · 3344 阅读 · 1 评论 -
printf 参数
有些code需要同时在32bit 或者64bit平台上跑,所以printf的时候就会有问题, 比如int64_t, 在32bit平台上打印为%lld,但是在64平台上打印为%ld, 所以,造成兼容性问题,现在可以用%j来代替,如下: 1.对于64bit number, 使用%jd或者%ju 2.对于size_t ssize_t 类型,使用%z, 比如size_t–>%zu, ssize_t –原创 2017-08-09 12:07:52 · 468 阅读 · 1 评论 -
c++11并发指南。(转载)
http://www.cnblogs.com/haippy/p/3235560.html。先记录在此,后面学习总结。转载 2017-04-19 15:11:51 · 306 阅读 · 0 评论 -
字符串操作总结
1.is_str_equal() 2.std::to_string()原创 2016-11-22 17:27:53 · 340 阅读 · 0 评论