C++ 基础
再奋斗10年
这个作者很懒,什么都没留下…
展开
-
C++ “an incomplete type” error(使用extern const 数组的问题)
开发中遇到一个问题,要做的事情是这样事的,在File_1.cpp定义了一个const的数组,在File_2.cpp中需要使用这个数组。File_1.cpp// 声明和定义extern const int s_data[] = {1, 2, 3};File_2.cpp// 声明extern const int s_data[];// 某函数使用```cppint num = sizeof(s原创 2021-03-06 10:37:46 · 652 阅读 · 0 评论 -
C/C++ strtok()是线程不安全
最近发生一题,通过使用hwasan发现了一个问题,指示代码使用了非法内存。通过代码和dump一直查不到原因,问题指示的是使用的内存被释放了。函数传入参数后,马上使用按asprinf copy了一份,之后进行处理。而外部内存释放的地方也是改函数执行后,才会被free。log显示asprintf的函数copy的string没有问题,问题点在一个循环中,循环有处理前面asprintf,在某次处理中才出现的问题。这题非常奇怪,请了很多人帮忙看,一直都没有看出问题原因,最后排查了所有可能的问题,最后值落到了strto原创 2020-12-17 20:45:25 · 2150 阅读 · 1 评论 -
Android native RIL 如何判断线程是否是主线程?
最近遇到一个问题,需要在Android RIL层判断当前是线程是否是主线程,如果是主线程需要执行一些逻辑,如果是非主线程,那就执行另外的逻辑。下面就是简单的sample了。#include <unistd.h>pid_t thread_id = gettid();pid_t process_id = getpid();if (thread_id == process_id) { do anything;} else { do others;}另外也简单介绍一下pt原创 2020-08-15 12:30:02 · 380 阅读 · 0 评论 -
C union(联合体)作用——玩转 union
C语言中,union相对于struct使用的次数在大部分项目中都处于明显的劣势,这和union的存储方式的特性有很大的关系。在union中,所有的字段都有相同的偏移量,而且所有的字段都是相互重叠的,union的大小是其中最大字段的大小。那我们就知道,如果所有的字段是相互重叠的,那改变其中任何一个字段的值,其他字段的值都会受到影响,也会发生变化。这就造成union在实际使用中使用的频率不会那么高,甚...原创 2020-04-18 15:06:45 · 10427 阅读 · 1 评论 -
C++ 使用macro create instance
最近要接手一个新的项目,项目是C++写的,里面使用了一些macro,还是有些意思的。假如现在有一个父类ParentClass,这个父类有很多子类,这些子类都需要实现一个实例化的函数,当然可以在父类中定义一个,之后子类override,使用macro可能更好些,只要做好规范,大家就照着标准写就可以了,生出来的函数都是一致的。那么我们就可以实现下面两个宏,一个是declare,一个implement...原创 2019-10-18 18:17:44 · 376 阅读 · 0 评论