06 2023 档案
摘要:[toc] * **unsigned int 的减法永远不会小于0** 展开查看:死循环 for (unsigned int i = 5; i >=0; --i) { printf("unsigned int 永远不会小于0"); }
阅读全文
摘要:[toc] # 构造 # 析构 * **父类一定要用virtual的析构函数dtor** * Fa类的~Fa::Fa()没有加virtual,delete就不会调用子类的析构 * Fa* ptr = new Son,如果delete ptr,就执行的是父类的dtor,而不是子类的析构dtor
阅读全文
摘要:[toc] * main.cpp编译后链接libA.so,如果libA.so的开发者重载了全局::operator new(size_t) 展开查看 // A.cpp的重载了全局::operator new(size_t)代码如下 // 使用 g++ -shared -fPIC -o libA.so
阅读全文
摘要:[toc] * 可以用operator new()给对象多分配一点内存,用来做隐藏变量 展开查看 class Object { int i, j; // 对外显示2个变量 operator new() { } };
阅读全文
摘要:[toc] * **new[]要和delete[]成对出现** * ptr=new Obj[3]会调用3次构造函数ctor,delete [] ptr,会调用3次析构函数dtor * `class Obj { Obj* child_ptr; }` * 如果不写[]只会调用一次dtor,即只有ptr[
阅读全文
摘要:[toc] * 链接:https://www.youtube.com/watch?v=uQ3wKWGmtk0&list=PLRTJhCIMo8HPlzVfZ8uxs6SGSSAtKXQ6Q * **所有的内存分配最终都会调用malloc** * glibc就是直接用的DL Malloc * 调用层次
阅读全文
摘要:[toc] # CMake * 可以通过`-D`选项设置编译器和cpp版本 1. `cmake -Bbuild -DCMAKE_CXX_COMPILER=/usr/bin/gcc-6` 可以指定使用`gcc-6`编译 2. `cmake -Bbuild -DCMAKE_CXX_STANDARD=14
阅读全文
摘要:[toc] * 进入这个网址:https://marketplace.visualstudio.com/items?itemName=hars.CppSnippets搜索c/c++然后下载 ; start_nginx(
阅读全文
摘要:[toc] * 一个空对象至少占用1字节的空间 展开查看:原因是在栈上分配2个对象时,要区分地址 class Object { }; void Function () { Object o1, o2; // 需要区分o1,o2的地址 } * 空类有虚函数,需要占用一个指针的空间,即:编译器会插入一个
阅读全文
摘要:[toc] 1. 原理:新版本.h里的class添加了虚函数、但是还在用旧版本so。 一个Object如果有虚函数,就会安插一个虚表指针vptr。
阅读全文
摘要:[toc] 1. std::array的size()是编译期确定的,不可改变大小 2. std::span和std::array区别 展开查看 `span`是一个轻量级的容器,可以包装任意类型和大小的连续内存区域,它并不拥有所包装的内存,只是提供了对这些内存的非拥有式视图 `span`的作用是提供对
阅读全文