首页
Sterben_01
取消

C++ 特殊成员函数相关

拷贝构造 调用的是拷贝构造函数还是赋值运算符,主要是看是否有新的对象实例产生。 如果产生了新的对象实例,那调用的就是拷贝构造函数;如果是对已有的对象赋值,调用的是拷贝赋值。 比如 P a = P(10); //这是拷贝构造。因为a还不存在。 //------------------------------------------------------ P a; a = P(1...

C++ 杂记

C++ 杂记 拷贝初始化,拷贝构造 直接初始化。 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 class ClassTest 5 { 6 public: 7 ClassTest() 8 { 9 c[0] = '\0'...

计算机网络 - 数据链路层1

计算机网络 - 数据链路层1 数据链路层 功能概述 为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。有连接一定有确认! 链路管理,即连接的建立、维持、释放(用于面向连接的服务)。 组帧 流量控制。 差错控制。(帧错、位错) 封装成帧 封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比...

计算机网络 - 传输层1

计算机网络 - 传输层1 传输层 传输层的功能 传输层提供进程与进程之间的逻辑通信。使用网络层的服务为应用层提供通信服务 复用和分用 复用:应用层所有的应用进程都可以通过传输层传输到网络层。 - 分用:传输层从网络层收到的数据可以交付给不同的应用进程。 对收到的报文进行差错检测 TCP 三次握手 ACK不...

C++ STL - 2 - 迭代器设计思路。萃取。

C++ STL - 2 - 迭代器设计思路。萃取。 什么是萃取? 三个字:中间层 我们这里先以侯捷老师的iterator_traits做为例子。 我们知道,iterator迭代器本身有五个属性。我们也知道迭代器是一个class。所以也就是迭代器类有五个typedef。分别是: namespace std { template <typename T> ...

imgtemp

imgtemp

C++ STL - 1 - List

C++ STL - 1 - List List G2.9 List自己本身只有一个指针指向了一个节点。它的数据__list_node和数据结构list是分开设计的。 数据本身不做过多叙述。一个指针指向前一个节点,一个指针指向下一个节点,一块数据区域。 List的迭代器 注意i++和++i的重载区别 在C++中,由于++i和i++都只有一个参数,那么...

Linux 内存管理

Linux 内存管理 侯捷老师的视频G2.9std alloc部分我们可以理解内存分配器是如何管理内存的。也就是维护一些具有固定内存大小的自由链表。如有分配需求就将其取下链表分配出去。如果不够就再调用malloc进行申请。然后进行切割。 这里的内存管理依旧是比较上层的。我们后来也提到了malloc会使用libc的C运行时库里面的mmap系统调用和brk系统调用进行分配内存分配。大内存使用...

C++内存管理- 17

C++内存管理 - 17 此笔记需要等待更新和确认。 std::alloc 源码剖析 视频14~27没什么难度。略 源码剖析8 有几个要点需要注意 248行的chunk已经是char**类型了。所以260行直接将其+n后转为obj*类型。259~261行的要点是,首先261行的for循环是从1开始的。因为切割出来后将第一块直接返回回去。不需要再放回去切割。所以259行直...

C++内存管理- 16

C++内存管理 - 16 此笔记需要等待更新和确认。 New Handler 当使用new申请内存失败时会抛出"bad alloc"异常,此前会调用一个由std::set_new_handler()指定的错误处理函数(”new-handler”)。 如下是一个最简单的形式 void outOfMem(){ std::cout<<"Unable to all...