c++
文章平均质量分 55
8818766
这个作者很懒,什么都没留下…
展开
-
C++ 四个阶段,智能指针,强制转换,深拷贝和浅拷贝,移动构造与拷贝构造,对比如何提高运行效率
四个阶段预处理–>编译–>编译–>链接.i–>.s–>.o–>.exe预处理:展开宏定义,加载头文件,删除注释,对行标号编译:语法分析,词法分析,生成汇编文件编辑(编译阶段可以进行gcc -o优化)编译:生成二进制文件链接:加载动态库或静态库的一部分,生成可执行文件智能指针auto : 两个auto指向同一个对象,会出现内存崩溃unique:保证同一时间只有一个智能指针指向该对象sharedweak强制转换const_cast:用于去除指向常数对原创 2022-03-28 23:43:50 · 2097 阅读 · 0 评论 -
web服务器问题排查
连不上服务器ping 网站域名无法ping通,可能是dns解析的问题ping通,则通过netstat查看端口,可能端口未开启若端口开启,则需要查看日志进程问题(cpu高或内存高)1.top查看进程信息,定位到可疑进程2.pstack + 进程ID 查看进程堆栈3.定位到相应代码,查找问题程序非法执行或崩溃1.如果有日志,先查日志2.程序崩溃会生成core文件,core文件进程的栈的内存状态,用gdb打开core文件,显示崩溃的位置...原创 2022-03-15 21:38:29 · 1307 阅读 · 0 评论 -
c++零散知识点整理,结构体和类的区别,new和malloc,左值和右值,内存对齐,指针函数指针
C++结构体和类的区别结构体是一种值类型,而类是引用类型结构体用栈存储,而类使用堆存储结构体内默认权限是public,类默认为private原创 2022-02-16 19:06:16 · 494 阅读 · 0 评论 -
CAS和ABA
https://zhuanlan.zhihu.com/p/400817892CAS(Compare & Set/Compare & Swap)CAS是解决多线程并行情况下使用锁造成性能损耗的一种机制,类似于乐观锁,在提交操作时检查是否一致CAS操作包含三个操作数——内存位置(V)、预期原值(A)、新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“原创 2022-02-11 21:08:54 · 114 阅读 · 0 评论 -
虚函数,虚表指针的初始化时期,静态函数能否为虚函数,哪些函数不能是虚函数
析构函数能否声明为虚函数或者纯虚函数?析构函数可以为虚函数,并且一般情况下基类析构函数要定义为虚函数,只有在基类析构函数定义为虚函数时,调用操作符 delete 销毁指向对象的基类指针时,才能准确调用派生类的析构函数(从该级向上按序调用虚函数),才能准确销毁数据。构造函数能否声明为虚函数或者纯虚函数?构造函数不能定义为虚函数。在构造函数中可以调用虚函数,不过此时调用的是正在构造的类中的虚函数,而不是子类的虚函数,因为此时子类尚未构造好。虚函数对应一个 vtable (虚函数表),类中存储一个 vptr原创 2021-12-24 15:30:35 · 1853 阅读 · 0 评论 -
c++指针和引用,STL实现
引用本身是不占空间一般情况下,siziof一个引用,会返回引用对象大小但是当编译器无法确定引用对象所占空间大小时,会用一个指针替代,返回一个指针大小+引用对象大小原创 2021-12-09 20:29:24 · 332 阅读 · 0 评论 -
C++内联函数与一般函数的区别,inline内联函数相比于define优点
https://blog.csdn.net/qq_33757398/article/details/81390151原创 2021-12-09 15:07:49 · 131 阅读 · 0 评论 -
vector详解,迭代器的几种失效的情况
vector用memset清零memset:作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作后果:会破坏vector的内部的结构,造成vector中的数据错误,可能会导致内存泄露。vector的clear的作用size设置成0,capacity不变扩容概述vector 为空的时候没有预分配空间,每次添加一个元素时,会判断当前是否还有剩余可用空间,如果没有则进行试探性扩容,并且把内存拷贝到新申请的内存空间上,并且释放原先的内存;扩增倍数vs为原创 2021-11-03 23:13:03 · 3189 阅读 · 0 评论 -
web server和线程池,线程池线程数量
锁#ifndef LOCKER_H#define LOCKER_H#include <exception>#include <pthread.h>#include <semaphore.h>// 线程同步机制封装类// 互斥锁类class locker {public: locker() { if(pthread_mutex_init(&m_mutex, NULL) != 0) { throw原创 2021-10-29 10:20:36 · 321 阅读 · 0 评论 -
C++模板
模板定义模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。面试简答:模板是一种通用函数,体现了泛型的概念,在使用时,可以把参数类型定义为一种参数,通过将类型作为参数传递给模板,可使编译器生成该类型的函数,提高了代码的复用性。...原创 2021-10-28 16:55:13 · 46 阅读 · 0 评论 -
为什么复制构造函数的参数需要加const和引用
为什么要是引用详解: 如果通过按值传递机制,在传递对象之前,编译器需要创建该对象的副本。因此,编译器为了处理拷贝构造函数的这条调用语句,需要调用拷贝构造函数来创建拷贝对象的副本。但是,由于是按值传递,第二次调用同样需要创建副本,因此还得调用拷贝构造函数,就这样持续不休。最终得到的是对拷贝构造函数的无穷调用。(其实就是创建副本也是需要调用拷贝构造函数的),所以解决办法改为引用。不使用引用的话编译器会报错简记:避免了值传递中把值传给一个局部变量,局部变量之前没有被创建,因此再调用拷贝构造函数而陷入无穷原创 2021-10-28 10:57:59 · 1505 阅读 · 0 评论 -
C++内存泄漏,内存溢出,局部对象的析构,虚函数对象模型
定义内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费原因1.调用了malloc/new等内存申请的操作,但缺少了对应的free/delete2.在释放对象数组时在delete中没有使用方括号3.对于构造函数缺少相应的析构函数检测1. windowsWindows平台下面Visual Studio 调试器和 C 运行时 (C原创 2021-10-28 09:38:56 · 203 阅读 · 0 评论 -
shared_ptr简单实现,计数器类型,weak_ptr使用
模板类temple<typename T>class SharedPtr {public: ...private: T *_ptr; int *_count; //should be int*, rather than int};析构函数shared_ptr对象每次离开作用域时会自动调用析构函数,而析构函数并不像其他类的析构函数一样,而是在释放内存是先判断引用计数器是否为0。等于0才做delete操作,否则只对引用计数器左减一操作。~SharedP原创 2021-08-31 23:04:42 · 259 阅读 · 0 评论 -
unique_ptr简单实现和析构函数delete指针的原因
https://blog.csdn.net/weixin_48063338/article/details/107578684原创 2021-08-31 22:15:05 · 1169 阅读 · 2 评论 -
c++变量内存分布
栈:存放各种临时变量堆:存放new/malloc申请的空间全局区:存放已初始化全局变量,未初始化全局变量,静态变量,静态函数常量区:存放常量,虚函数表代码段:存放函数,虚函数...原创 2021-08-20 17:46:42 · 66 阅读 · 0 评论 -
static、const、extern关键字的详解,const和define区别
详解https://blog.csdn.net/weixin_43211535/article/details/105988279原创 2021-08-23 22:47:00 · 53 阅读 · 0 评论 -
sizeof详解(网易互娱一面)
sizeof 默认使用成员当中最大的对齐字节来对齐,可以使用#pragma pack(n)来指定的对齐值Size of char : 1Size of int : 4Size of short int : 2Size of long int : 4Size of float : 4Size of double : 8Size of 指针 : 4(32位系统Size of 指针 : 8(64位系统sizeof(类)链接: linkhttps://www.cnblogs.com/ra原创 2021-08-13 18:30:52 · 51 阅读 · 0 评论 -
c++重载,重写和隐藏
链接: link.https://blog.csdn.net/gogogo_sky/article/details/72807123原创 2021-06-21 18:47:31 · 72 阅读 · 0 评论