04 2021 档案
摘要:循环引用指的是使用多个智能指针 shared_ptr 时,出现了指针之间的相互指向,从而形成环的情况,类似于死锁现象,在这种情况下智能指针往往不能正常调用对象的析构函数,从而造成内存泄漏; #include<iostream> #include<memory> using namespace std
阅读全文
摘要:C 模拟 C++ 的多态特性(指向派生类的基类指针在调用虚函数时是派生类重写的函数) 利用的是函数指针,因为 C 的 struct 是不能有函数的(C++ 的struct可以) #include<iostream> using namespace std; struct A{ virtual voi
阅读全文
摘要:对于push_back和emplace_back在数组尾后添加元素的区别: #include<vector> #include<string> #include<iostream> using namespace std; struct Person{ string name; int age; /
阅读全文
摘要:# const char* 、 char * 和 string 相互转换 1. string 转 const char* string s = "abc"; //const char* => string const char *s = s.c_str(); //string 转成 char* 直接
阅读全文
摘要:strcpy 和 memcpy 的区别 源码实例: #include<cstdio> #include<cstring> #include<cassert> char *myStrcpy(char* dest, const char* src){ if ((NULL == dest) || (NUL
阅读全文
摘要:1. 重写 == 操作符 #include<iostream> using namespace std; struct A{ char ch; int val; friend bool operator==(const A &ob1, const A &ob2); bool operator==(c
阅读全文
摘要:ubuntu18(g++、gdb) #include<iostream> #include<stdio.h> using namespace std; int main(){ int x = 1; int y = 2; int &b = x; return 0; } 编译带参数 -g gdb ./程
阅读全文
摘要:+ 宏主要是用于定义常量及书写复杂的内容;typedef 主要定义类型别名; + 宏替换发生在预处理阶段,属于文本插入替换;typedef 是编译的一部分; + 宏不检查类型; typedef 会检查数据类型; + 宏不是语句,不在结尾处加分号; typedef 是语句,要加分号标识结束; + 注意
阅读全文
摘要:# new/delete 和 malloc/free 的区别与联系 + malloc/free 则是库函数,而 new/delete 是运算符; + malloc 开辟空间需要手动计算大小并传入,new 是后接类型编辑器自己计算; + malloc 返回类型为 void*,使用时需要强制转换,new
阅读全文
摘要:# 堆和栈的区别 + 管理方式不同:堆中资源由程序员控制,容易产生内存泄漏,栈资源由编译器自动管理,无需手动控制; + 内存管理机制不同:系统有一个记录空闲列表的链表,当系统收到程序申请时,遍历该链表,寻找第一个空间大于申请空间的堆节点,删除空闲节点列表中的该节点,并将该节点空间分配给程序(大多数系
阅读全文
摘要:出处 https://www.cnblogs.com/dolphin0520/archive/2011/09/17/2179466.html 结构体在内存中存储位置并不是按照各自的元素占的空间大小顺序放置的,它有一定的规律,这个规律就是结构体成员内存对齐的内容。 需要内存对齐的原因: 1) 平台限制
阅读全文
摘要:在C/C++程序中,main函数结束,会有一个步骤去调用 atexit 注册的函数 #include<cstdio> #include<cstdlib> void func1() { printf("The process is done...\n"); } void func2() { print
阅读全文
摘要:Q:C 和 C++ 的区别是什么? A:C++ 在设计之初可以看作是 C 的超集,但是随着C++的发展,C 和 C++ 现在已经发展成了两种不同的语言,但是它们的联系还是很密切的: + 首先 C 和 C++ 在基础语法上差别不大。 这里说的基础语法说的是语法细节,C++ 能支持绝大多数的 C 的基础
阅读全文