摘要: 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。 注意它与数据结构中的堆是两回事, 阅读全文
posted @ 2018-03-13 17:23 8号prince 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 小端模式:数据的高字节放在内存的低地址,数据的低字节放在内存的高地址。记住:小端模式是相反的,只需要记住小端模式即可,windows默认采用的是小端模式。 字节对齐问题:字节对齐有3个准则: 1.结构体变量的首地址能被其最宽的基本类型成员的大小所整除; 2.结构体每个成员相对于结构体首地址的偏移量都 阅读全文
posted @ 2018-03-13 13:55 8号prince 阅读(178) 评论(0) 推荐(0) 编辑
摘要: TCP(Transmission ControlProtocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发 阅读全文
posted @ 2018-03-13 12:50 8号prince 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 三次握手: 3次握手的过程如下: 第一次握手:起初两端都处于CLOSED关闭状态,Client将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给Server,Client进入SYN-SENT状态,等待Server确认; 第二次握手:Server收到数据包后由标志位SYN=1得知Cli 阅读全文
posted @ 2018-03-13 11:54 8号prince 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 1.vector数据结构vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。 阅读全文
posted @ 2018-03-13 10:31 8号prince 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 异常被抛出后,从进入try块起,到异常被抛掷前,这期间在栈上的构造的所有对象,都会被自动析构。析构的顺序与构造的顺序相反。这一过程称为栈的解旋(unwinding)。 例如: 上面的代码执行结果为: 调用类A的构造函数 调用类A的构造函数 myfun()要发生异常 调用类A的析构函数 调用类A的析构 阅读全文
posted @ 2018-03-11 22:07 8号prince 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 1.异常可以跨越函数 ;2.异常中的catch()严格进行类型匹配;3.异常出现后,可以不处理,再次抛出异常 阅读全文
posted @ 2018-03-11 21:41 8号prince 阅读(107) 评论(0) 推荐(0) 编辑
摘要: C++中有四种类型转换,分别是:static_cast、dynamic_cast、reintepret_cast、const_cast。 以下是实现4种类型转换的实例: 阅读全文
posted @ 2018-03-11 15:37 8号prince 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 1.const的符号表机制探究 c语言中的const是一个冒牌货,c++中的const才是一个真正的常量。原因分析:c语言中的const将重新分配一块内存空间。c++编译器对const关键字做了特殊处理,将const常量放到符号表中。 例如:p = (int *)&a;对a变量取地址,C++编译器会 阅读全文
posted @ 2018-03-09 10:01 8号prince 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 上一节里面已经提到了,用类模板存储自定义的数据类型,如Teacher类型时,需要重载Teacher类的拷贝构造函数,“=”操作符,"<<"操作符,特别要注意深拷贝和浅拷贝的问题。 例如: 上述代码的执行结果是: 26 Wu 33 Li 调用模板类的析构函数 调用Teacher类的析构函数 调用Tea 阅读全文
posted @ 2018-03-08 12:00 8号prince 阅读(1443) 评论(0) 推荐(0) 编辑