C++
CodePlayer大旭
我是程序员大旭,现在是一名应用软件研发工程师,主攻golang后端,在此记录与分享个人的成长!
展开
-
c++中typedef和#define的区别
c++中typedef和#define的区别宏主要用于定义常量及书写复杂的内容;typedef主要用于定义类型别名。宏替换发生在编译阶段之前(预处理阶段),属于文本插入替换;typedef是编译的一部分。宏不检查类型;typedef会检查数据类型。宏不是语句,不在在最后加分号;typedef是语句,要加分号标识结束。注意对指针的操作,typedef char * p_char和#define p_char char *区别巨大。第五点示例代码如下#include<iostream&g原创 2021-09-28 10:36:08 · 327 阅读 · 0 评论 -
2021-09-27
C++中STL中的shared_ptr的线程安全问题通过下面的程序我们来测试shared_ptr的线程安全问题。需要注意的是shared_ptr的线程安全分为两方面:智能指针对象中引用计数是多个智能指针对象共享的,两个线程中智能指针的引用计数同时++或–,这个操作不是原子的,引用计数原来是1,++了两次,可能还是2。这样引用计数就错乱了。会导致资源未释放或者程序崩溃的问题。所以智能指针中引用计数++、–是需要加锁的,也就是说引用计数的操作是线程安全的。智能指针管理的对象存放在堆上,两个线程中同时去访原创 2021-09-27 15:46:37 · 50 阅读 · 0 评论