![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
醉如泥
GO GO GO
展开
-
Linux下C++线程间同步机制
线程的最大特点是资源的共享性,linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。1)互斥锁(mutex)通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutex_attr_t *mutexattr);int pthread_mutex_lock(pthread_mutex *mutex);int pthread_原创 2020-05-08 19:35:36 · 515 阅读 · 0 评论 -
Linux下C++进程间通信机制
linux下进程间通信的几种主要手段简介:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信; 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BS..原创 2020-05-12 20:23:03 · 1654 阅读 · 0 评论 -
C/C++进程内存分布
一、进程的内存分布图: 二、简单说明:代码区(.text):也称文本段(Text Segment),存放着程序的机器码和只读数据(常量),可执行指令就是从这里取得的。如果可能,系统会安排好相同程序的多个运行实体共享这些实例代码。这个段在内存中一般被标记为只读,任何对该区的写操作都会导致段错误(Segmenta...原创 2018-10-30 22:54:41 · 1086 阅读 · 0 评论 -
C++类内存分布
我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。我们先用好Visual Studio工具,像下面这样一步一步来:先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),...转载 2020-04-27 18:01:39 · 287 阅读 · 0 评论 -
Overload(重载)、Override(覆盖)、Overwrite(重写) 三者区别
Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。Override(覆盖):是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)...转载 2019-09-03 21:07:19 · 581 阅读 · 0 评论 -
C++11新特性
1.引入 nullptr如果 NULL 被定义为 ((void*)0),C++ 不允许直接将 void * 隐式转换到其他类型,那么当编译char *ch = NULL时,无法编译通过,因此NULL一般被定义为 0。而这依然会产生问题,将导致了 C++ 中重载特性会发生混乱,为了解决这个问题,引入nullptr。考虑以下:void foo(char *);void foo(in...原创 2019-08-08 21:08:22 · 169 阅读 · 0 评论 -
sizeof,strlen 使用总结
1.sizeof是一种操作符,对变量或者对象可以不加括号,但是类型,必须加括号;2.指针与数组sizeof()使用: (1) 指针也属于一种变量类型(32位操作系统下是4字节,64位操作系统是8字节): 例1:char *p; int length1=sizeof(p) ; // length1=4 或 length1=8;...原创 2016-03-05 22:21:36 · 197 阅读 · 0 评论 -
C/C++基础
人生短暂,做点记录吧!1、一个空类占内存1个字节。这是为了保证n个连续空类声明时,变量地址有偏移,防止变量覆盖。2、一个类成员 ,当有虚函数时,就存在一个虚函数表的 "指针"(无虚不存在)。3、C和C++都支持结构体,C++的结构体,可以认为是类的一种变体,二者的差异性。类中成员,如果不声明,默认是private,结构体中成员,如果不声明,则默认是public。4、在C++里...原创 2019-08-07 11:53:59 · 88 阅读 · 0 评论 -
#define,const ,static 的使用总结
static的使用1、全局变量(初始化和未初始化),静态变量(全局和局部) 都在静态区存放,生命周期大于主函数,进程开始时创建,进程结束时回收2、全局变量和静态变量的作用域问题 1)全局变量的作用于就是全局,跟放置位置无关 2)静态全局变量:把修饰的变量的作用与限制在本文件中, 静态局部变量:只初始化一次,以后直接使用,声明周期贯穿整个进程3)...原创 2016-03-06 21:12:41 · 378 阅读 · 0 评论 -
STL 二级空间配置器实现机制
一:简述STL 空间配置器(allocator)中分配内存与构造对象分开,在头文件<memory>定义:1、分配内存由alloc::allocate()负责,内存释放由alloc::deallocate()负责,在<stl_alloc.h>定义。2、构造对象由::construct()负责,对象析构由::destroy()负责,在<stl_construc...原创 2018-08-22 23:00:41 · 211 阅读 · 0 评论 -
C++继承时权限
C++中类的三种访问权限: 公用(public):访问权限最高;派生类,外部函数,对象也可以直接访问(无论是成员变量还是成员函数)。 私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数,对象都不能访问。 保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数,对象不能访问。继承时,这样更容易记住: C++中类的的继承方式有:p原创 2016-07-26 16:47:53 · 1388 阅读 · 0 评论