拷贝构造函数和TIME_WAIT状态的意义
来源:互联网 发布:歌华网络 编辑:程序博客网 时间:2024/05/19 19:32
/************深拷贝 浅拷贝***********/
c++默认拷贝构造函数是浅拷贝,
因此要实现深拷贝我们需要重新写,
防止默认拷贝发生 因为默认拷贝构造函数 会造成赋值等操作 调用默认拷贝,
但是只是执行了浅拷贝,所以导致程序结束,调用析构函数释放空间的时候
会释放两次。这就出问题了
所以要么禁用默认拷贝构造函数
要么自己重写拷贝构造函数
默认拷贝构造函数 不处理静态对象 static
也不处理 new的那些指针对象 并没有单独的空间 只是指向一个地方 所以析构的时候出了问题
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
TypeName(const TypeName&); \TypeName& operator=(const TypeName&)
class Rect
{
public:
Rect() { p = new int(100); }
//没有这两个的话 程序最后会崩溃,p指向的空间释放了两次
Rect(const Rect& r){
p = new int;
*p = *(r.p);
width = r.width;
height = r.height;
}
Rect& operator=(const Rect& r)
{
p = new int;
*p = *(r.p);
width = r.width;
height = r.height;
}
~Rect() { delete p; }
private:
//或者使用这个 禁掉默认拷贝构造函数
//DISALLOW_COPY_AND_ASSIGN(Rect);
private:int* p;
int width;
int height;
};
int main()
{
Rect r1;
Rect r2 = r1;
Rect r3(r1);
}
/************TCP***********/
常用的TCP选项
mss 1500 1460 最大分节 本连接接每个TCP分节中愿意接受的最大数据量
滑动窗口 拥塞控制 SO_RCVBUF 一般最大65535 16位 卫星通信等可以更大 提高吞吐量
时间戳 高速连接 失而复现分组可能造成的数据破坏
TIME_WAIT状态会维持2个msl 存在理由何在
讲道理直接结束不是完了 为何还要维护这个状态,
1 因为它是主动断开的,最后一个ack是由它发的,如果这个丢了,它也直接关掉了,
那么对端就收不到这个最后一个ack,就算异常 rst了
2 等TIME_WAIT完了后才能重新建立连接,否则,重新连接,上次的报文还在路上,
新连接已经建立,误以为老的报文是新连接的数据。这就不对了
- 拷贝构造函数和TIME_WAIT状态的意义
- TIME_WAIT状态的意义
- TIME_WAIT状态的意义
- TIME_WAIT状态的意义
- TIME_WAIT状态的意义
- TIME_WAIT状态的意义
- 拷贝构造函数和赋值函数的必要性和意义
- 拷贝构造函数和赋值函数的必要性和意义
- 拷贝构造函数和赋值函数的必要性和意义
- time_wait状态存在的意义
- 显示定义拷贝构造函数和赋值函数的意义及深浅拷贝区别
- C++的构造函数和拷贝构造函数
- 关于对构造函数和拷贝构造函数的理解
- 拷贝构造函数和赋值构造函数的异同
- 拷贝构造函数和赋值构造函数的异同
- 拷贝构造函数和赋值构造函数的异同
- 拷贝构造函数和赋值构造函数的异同
- 拷贝构造函数和赋值构造函数的区别
- 自动寻物 与鼠标定点
- 分享几个可以有效提升工作效率的pdf小技巧
- 32位win7/32位系统/Python环境下安装libSVM
- 比较复杂的sql
- 文本文件与二进制文件的区别
- 拷贝构造函数和TIME_WAIT状态的意义
- linux mysql的慢查询日志
- c++ 通过socket(网络套接字)传输图片(服务端)
- BZOJ 1001 网络流最小割 解题报告
- DataFrame 数据合并,连接(merge,join,concat)
- HDU6168Numbers
- Cookie技术
- NYOJ 613 免费馅饼
- 使用scrapy爬取豆瓣上面《战狼2》影评