C++
萤火虫 ✨
这个作者很懒,什么都没留下…
展开
-
C++侯捷视频笔记之内存管理std::allocator(四)分配器
目录一、VC6中malloc的内存分配布局二、标准分配器的实现1、vc6编译器2、G4.9编译器 pool allocator用例3、G2.9 std::alloc运行模式一、VC6中malloc的内存分配布局二、标准分配器的实现1、vc6编译器2、G4.9编译器 pool allocator用例3、G2.9 std::alloc运行模式每个链表负责不同大小的内存块的分配,分别为16bytes、24bytes、32bytes...原创 2022-04-22 11:51:01 · 1434 阅读 · 1 评论 -
C++侯捷视频笔记之内存管理primitives(三)内存分配器演变
目录一、per-class allocator,版本1st二、per-class allocator,版本2nd三、static allocator 版本3rd四、macro for static allocator 版本4th五、global allocator一、per-class allocator,版本1st为减少malloc次数并减少cookie占用的内存,可先分配一个内存池,再从内存池不断获取内存使用全局operator new分配内存时需要分配8 bytes用来存储上下两个cookie原创 2022-04-21 21:33:36 · 1128 阅读 · 0 评论 -
C++侯捷视频笔记之内存管理primitives(二)内存管理工具的重载
目录一、c++应用程序内存分配路径二、c++容器内存分配路径三、重载::operator new/::operator delete(全局的)四、重载operator new/operator delete(类内的)五、重载operator new[]/operator delete[](类内的)一、c++应用程序内存分配路径二、c++容器内存分配路径三、重载::operator new/::operator delete(全局的)四、重载operator new/operator delet原创 2022-04-21 16:04:37 · 1309 阅读 · 0 评论 -
C++侯捷视频笔记之内存管理primitives(一)现有内存管理工具
内存分配的每一层面C++用于内存管理的工具malloc的使用(C函数)void* p1= malloc(512);//512 bytesfree(p1);new的使用(C++表达式)complex* p2 = new complex;//一个对象delete p2;::operator new的使用(C++函数)void* p3=::operator new(512);//512bytes::operator delete(p3);allocator::allocate()的使用(原创 2022-04-06 20:00:33 · 1255 阅读 · 0 评论 -
Google glog日志记录框架
github链接原创 2022-03-31 20:02:42 · 280 阅读 · 0 评论 -
gtest-C++测试框架
代码仓库教程原创 2022-03-17 21:56:50 · 882 阅读 · 0 评论 -
CMake官网地址
code 仓库[入门教程(https://cmake.org/cmake/help/latest/guide/tutorial/Adding%20a%20Library.html)原创 2022-03-17 14:36:56 · 908 阅读 · 0 评论 -
vs c++开发者命令提示工具
位置查看类cl /d1 reportSingleClassLayoutSon test.cppSon为要查看的类名 test.cpp为类所在的文件虚继承(菱形继承的解决方案)原创 2021-12-13 10:55:55 · 516 阅读 · 0 评论 -
#include<>和“”的区别
C语言中两种方式使用#include命令, #include <>与#include ””的区别一种是在包含指令#include后面”<>”将头文件名括起来。这种方式用于标准或系统提供的头文件,到保存系统标准头文件的位置查找头文件。另一种是在包含指令#include后用双引号””将头文件包括起来。这种方式常用与程序员自己的头文件。用这种格式时,C编译器先查找当前目录是否有指定名称的头文件,然后在从标准头文件目录中查找。...转载 2021-12-11 14:09:36 · 207 阅读 · 0 评论 -
struct 和class的区别
区别转载 2021-09-16 08:28:51 · 85 阅读 · 0 评论 -
cuda编程总结
安装cuda(Nvidia官网)链接: https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64.基于vs的cuda调试工具Nsight(安装cuda应该会一起安装)链接: https://developer.nvidia.com/gameworksdownload#?dn=n...原创 2020-03-18 11:58:50 · 236 阅读 · 0 评论 -
c++中类的继承和虚函数
类的继承和虚函数转载 2020-12-13 22:58:47 · 86 阅读 · 0 评论 -
imgui在C++项目的配置
https://my.oschina.net/u/4299308/blog/3263555原创 2020-10-14 19:46:13 · 1924 阅读 · 0 评论 -
虚函数 纯虚函数 抽象基类
虚函数 (virtual)基类:声明并定义一个虚函数派生类:实现虚函数的重写与覆盖final:后续派生类不能再覆盖的虚函数override:对虚函数进行重写的函数final与override假设声明一个基类的指针,它可以根据指向的对象类型动态的绑定对应的函数虚函数的默认实参如果我们通过基类的引用或指针调用函数,则使用基类中定义的默认实参纯虚函数(1)当想在基类中抽象出一个方法,且该基类只做能被继承,而不能被实例化;(2)这个方法必须在派生类(derived class)中被实现;原创 2020-09-30 09:41:51 · 173 阅读 · 0 评论 -
内联函数与宏定义
内联函数与宏定义的区别转载 2020-09-29 10:40:08 · 73 阅读 · 0 评论 -
友元
友元函数 友元类 友元成员函数转载 2020-09-29 10:16:40 · 142 阅读 · 0 评论 -
第十一章 关联容器
map基于红黑树实现(红黑树是一种自平衡二叉树,保障了良好的最坏情况运行时间,可以在O(log n)时间内完成查找、插入、删除)红黑树是一种二叉查找树,其重要性质是有序,中序遍历时取出的元素是有序的。unordered_map基于hash_table实现,一般是由一个大vector,vector元素节点可以挂接链表来实解决冲突来实现。...原创 2020-09-20 20:15:55 · 105 阅读 · 0 评论 -
vs模式切换
insert:由改写模式到插入模式原创 2020-05-03 21:30:10 · 839 阅读 · 0 评论 -
VS插件
CodeMaid功能负责代码的自动排版下载位置VS----->菜单栏----->扩展----->管理扩展------>联机------>搜索CodeMaid注意事项修改了代码,想撤销此次修改, 需要连续多按 CTRL+Z, 而且次数居然5次之多, 才能撤销此次的修改;这三个选项,每使用一项, 就到导致撤销至少需要多输入一次 CTRL+Z;...转载 2020-03-12 11:17:47 · 216 阅读 · 0 评论 -
赋值运算符函数
注意点返回值的类型为该类型的引用,函数结束前返回实例自身的应用(*this)只有返回一个引用,才可以连续赋值;如果返回值为void,语句str1=str2=str3无法通过编译传入参数的类型为常量引用如果传入的参数不是引用而是实例,从形参到实参会调用一次复制构造函数;参数为引用可以提升效率;赋值运算符函数内不会改变传入的实例的状态,所以应为常量类型;释放实例自身已有的内存 在分配新内存之前应该释放自身已有的空间,否则会造成内存泄漏判断传入的参数和当前的实例是不是同一个实例若是同一个原创 2020-08-22 10:26:39 · 230 阅读 · 0 评论 -
复制构造函数
参数为常量引用类型示例class A{private: int value;public: A(int n){value=n;} A(A other){value=other.value;}// 此处应该为A(const A& other){value=other.value;} void Print(){std::cout<<value<<std::endl;};int _tmain(int argc,_TCHAR* argv[]){ A a=1原创 2020-08-22 09:57:05 · 134 阅读 · 0 评论 -
C++重点内容
C++重点面向对象的特性构造函数析构函数动态绑定内存管理参考书籍《Effective C++》 面试突击《C++Primer》《深度探索C++对象》《The C++ Progamming Language》原创 2020-08-22 09:38:00 · 132 阅读 · 0 评论 -
linux与vi编辑器基本命令
C++基础学习记录linux命令参考手册打开终端 ctrl+alt+t在终端退出锁定 ctrl+c帮助命令 --helpman lsTab 自动补全命令,有重复项两次tab列出列表打开目录 cd显示当前路径 pwd列出当前位置的文件夹或文件 ls查看文件属性 file查看文件权限 ll当前目录./ 上一级目录../文件权限读 r(read)写 w(write)执行 x(execute)linux基本命令格式:命令 选项 参数linux命令参考手册打开终端 ctrl+alt+t在终端退出锁定 ct原创 2020-06-05 21:01:49 · 652 阅读 · 0 评论 -
指针和const
const用于指针int age=39;const int * pt=&age;指针指向一个常量对象,可以防止使用指针修改所指向的值;pt的声明并不意味着它指向的值实际上就是一个常量,只是意味着对pt而言,这个值是一个常量;int sloth=3; int * const finger=&sloth;指针本身是常量,可以改变指针指向的位置;四种赋值常规变量的地址赋值给常规指针常规变量的地址赋值给const的指针const变量的地址赋给指向const的指针const的地址赋原创 2020-05-12 10:16:57 · 140 阅读 · 0 评论 -
函数与数组
数组名C++将数组名解释为第一个元素的地址:int cookies[8];则 cookies==&cookies[0](例外:对数组名使用sizeof将得到整个数组的长度,以字节为单位;将地址运算符用于数组名时将返回整个数组的地址,如&cookies返回一个32字节内存块的地址)2.数组名做函数参数int sun_arr(int arr[],int n)int sun_arr(int *arr,int n)两者都是正确的,在C++中当且仅当在函数头或函数原型中int ar原创 2020-05-11 17:00:49 · 219 阅读 · 0 评论 -
C++多线程编程
创建线程的方法头文件#include 线程函数类对象线程传递参数相关函数mythread.join():阻塞主线程,等待子线程执行完毕;mythread.detach():将子线程与主线程分离,主线程不再等待子线程std::ref():若要使用引用来改变原来参数,就用std::ref()std::move():并不能移动任何东西,它唯一的功能是将一个左值强制转化为右值...原创 2020-05-03 22:10:17 · 104 阅读 · 0 评论 -
c++ 类的继承
c++ primer plus 笔记类的继承面向对象编程目的:提供可以重用的代码;类的组合数据表示类方法类继承的作用扩展类修改类class derived:public base{.......}类基类派生类派生类的构造函数首先创建基类对象派生类构造函数应该通过成员初始化列表将基类信息传递给基类构造函数(若不调用基类构造函数将使用默认的基类构造函数)...原创 2020-03-18 16:19:04 · 218 阅读 · 0 评论 -
C++ return *this and return this
别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。正确答案为:return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:#include using namespace ...转载 2019-11-10 19:40:21 · 347 阅读 · 0 评论 -
C++模板
转载地址:http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.htmlC++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或...转载 2019-11-09 21:10:35 · 96 阅读 · 0 评论