C++
DK23333
这个作者很懒,什么都没留下…
展开
-
C++编译过程
C++编译过程基本过程预编译:编译:链接:静态链接动态链接 基本过程 基本过程为: 预编译 -> 编译 -> 链接 预编译: 替换所有的宏 处理所有的预编译指令例如:#ifdef 处理#include,将包含的文件插入目标文件中。其中自己定义的文件一般用#include“xxx.h”,表示从程序当前目录寻找文件。而库文件则一般用#include,表示从系统目录寻找文件。 过滤所有的注...原创 2020-02-26 16:11:34 · 164 阅读 · 0 评论 -
C++重要知识点
C++重要知识点 右值引用原创 2020-02-18 19:13:45 · 174 阅读 · 0 评论 -
C++线程同步的几种方式
1.临界区,通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。确保在某个时刻只有一个线程能访问数据。此时其他线程如想访问数据则会被挂起,直到当前线程离开临界区。临界区被释放后,其他线程继续抢占。 2.互斥量,和临界区类似,可以保证同一时刻只有一个线程访问数据。类似java中的对象锁。成功获取互斥量的线程可以访问数据,其他线程将被挂起,直到当前线程释放互斥量。互斥量比临界区复...原创 2018-05-28 16:32:00 · 3672 阅读 · 0 评论 -
C++学习计划
1.头文件和命名空间,对比java中的import。 2.内存结构,对比java中的堆,栈,方法区,程序计数器。 3.同步机制,对比java中的synchronized。 4.看一下有没有类似java中ConcurrentHashMap提供线程安全的容器。 5.重新回顾一遍C++语言本身。...原创 2018-05-24 14:20:08 · 401 阅读 · 0 评论 -
Java和C++中的volatile
1.Java中的volatile:在Java内存模型中,线程共享的资源放在主存中,每个线程同时拥有自己的本地内存。而本地内存中存放了被该线程使用到的主内存变量的拷贝。线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。由此可能导致线程间无法读取变量的最新状态。被volatile修饰的变量在修改时会被强制写到主存中,从而保证该变量对其他线程的可见性。 2.C++中的volat...原创 2018-05-29 14:16:46 · 927 阅读 · 0 评论 -
C++中的强制类型转换
1.const_cast<>(expression):用于去除const,volatile和__unaligned属性。只能作用于指针或者引用。例如: const int a= 0; int b = const_cast<int>(a);//不对的 const int *pi = &a; int * pii = const_cast<int *>pi;...原创 2018-05-29 16:41:30 · 163 阅读 · 0 评论