
c/c++
文章平均质量分 87
ws四年
这个作者很懒,什么都没留下…
展开
-
malloc和new的区别
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强转载 2013-11-07 17:43:29 · 603 阅读 · 0 评论 -
第二十章 TCP的成块数据流
1.传输时的ACK问题 使用TCP窗口协议时,接收方不必确认每一个收到的分组。在TCP中,ACK是累积的---它们表示接收方已经正确接收到了一直到确认序号减一的所有字节 2.滑动窗口 滑动窗口实际上是描述接收方TCP缓冲区大小的数据,发送方根据这个计算自己可以发送的数据大小。 当接收方确认数据后,这个滑动窗口不断向右移动。窗口两个边沿的相对运动增加或减小了窗口的大小。我们使用三个术语描述窗原创 2014-07-21 11:34:49 · 600 阅读 · 0 评论 -
enable_shared_from_this实现分析
使用情景:当类对象被 shared_ptr 管理时,需要在类自己定义的函数里把当前类对象作为参数传给其他函数时,这时需要传递一个 shared_ptr ,否则就不能保持 shared_ptr 管理这个类对象的语义(因为有一个 raw pointer 指向这个类对象,而 shared_ptr 对类对象的这个引用没有计数,很有可能 shared_ptr 已经把类对象资源释放了,而那个调用函数还在使转载 2014-10-28 22:18:02 · 933 阅读 · 0 评论 -
C++中智能指针的设计和使用
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷转载 2014-09-12 00:09:28 · 588 阅读 · 0 评论 -
C++ Primer(二)变量和基本类型
2.1基本内置类型2.1.1整型wchar_t类型用于扩展字符集,比如汉字日语,这些字符集中的一些字符不能用单个char表示一般地,short类型为半个机器字(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机中,long和int类型通常字长是相同的)1.带符号和无符号类型当我们把一个超出其取值范围的值赋给一个指定类型的变量时: 对于un原创 2014-06-10 22:36:35 · 606 阅读 · 0 评论 -
C++ Primer(十五) 面向对象编程
15.2定义基类和派生类15.2.1 定义基类1. 基类成员函数成员函数默认为非虚函数,对非虚函数的调用将在编译时确定。保留字virtual只在类内部的成员函数声明中出现,不能再类定义体外部出现在函数定义山。基类通常将派生类需要重定义的任意函数定义为虚函数。2. 访问控制和继承在基类中,public和private标号具有普通含义:用户代码可以访问类的public成员而原创 2014-06-22 21:39:56 · 681 阅读 · 0 评论 -
C++ Primer(十三) 复制控制
复制构造函数、赋值操作符、析构函数总称为复制控制。编译器自动实现这些操作,但类也可以定义自己的版本。13.1 复制构造函数只有单个形参,并且该形参类型是对本类类型对象的引用,这样的构造函数称作复制构造函数。与默认构造函数一样,复制构造函数可以由编译器隐式调用,复制构造函数可以用作: ·根据另一个同类型对象显示或者隐式初始化一个对象·复制一个对象,将它作为实参传递给函数·从函原创 2014-06-19 21:26:39 · 652 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.youkuaiyun.com/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R转载 2014-07-09 10:58:24 · 483 阅读 · 0 评论 -
C++11中值得关注的几大变化
赖勇浩(http://laiyonghao.com)声明:本文源自 Danny Kalev 在 2011 年 6 月 21 日发表的《The Biggest Changes in C++11(and Why You Should Care)》一文,几乎所有内容都搬了过来,但不是全文照译,有困惑之处,请参详原文(http://www.softwarequalityconnection.com/2转载 2014-07-09 11:54:44 · 513 阅读 · 0 评论 -
C++ Primer(七)函数
7.1函数的定义1. 函数的调用函数调用做了两件事情:用对应的实参初始化函数的形参,并将控制权转移给被调用函数,主调函数的执行被挂起,被调函数开始执行。函数的运行以形参的定义和初始化开始。3.形参和实参函数的形参为函数提供了已命名的局部存储空间。形参是在函数的形参表中定义的,并由调用函数时传递给函数的实参初始化。实参则是一个表达式。所传递的实参个数必须与函数的形参个数相同。原创 2014-06-14 11:30:05 · 795 阅读 · 0 评论 -
C++ Primer(四)数组和指针
4.1 数组数组定义中的类型名可以是内置类型或者类类型,除引用之外,数组元素的类型还可以是任意的复合类型。没有所有元素都是引用的数组4.11数组的定义和初始化数组的维数必须用值大于1的常量表达式定义。此常量表达式只能包含整型字面值、枚举常量或者用常量表达式初始化的整型const对象。非const变量以及要到运行时才知道其值的const变量都不能用于定义数组的维数1.显示初始化数组元原创 2014-06-12 22:19:58 · 709 阅读 · 0 评论 -
C++ Primer(五) 表达式
5.1算数操作符如果两个操作数都为正数,触发(/)和求模(%)操作结果也是正数;如果两个操作数都是负数,除法结果为正数,求模结果为负数;如果一个为负数,这两种操作的结果取决于机器;求模结果的符号取决于机器,而除法操作的值则是负数当有一个操作数为负数时,求模操作结果值得符号可依据分子或分母的符号而定。如果求模的结果跟随分子的符号,则除出来的值向零一侧取整;如果求模与分母的符号匹配,则除出来的原创 2014-06-12 22:21:28 · 642 阅读 · 0 评论 -
栈区,堆区,全局区,文字常量区,程序代码区 内存详解
在C/C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存转载 2014-06-10 22:59:29 · 1829 阅读 · 0 评论 -
C++ Primer(三)标准库类型
3.2标准库类型3.2.1 string对象的定义和初始化string标准库支持几个构造函数。当没有明确指出对象初始化式时,系统将使用默认构造函数 1: string s1; //默认构造函数,s1为空串 2: string s2(s1); //将s2初始化为s1的一个副本 3: string s3("value"); //将s3初始化为一个字符串字面值的副原创 2014-06-10 22:47:45 · 567 阅读 · 0 评论 -
C++ Primer(十二) 类
12.1 类的定义12.1.和声明12.1.1 类定义:扼要重述一旦类定义完成后,就没有任何方式可以增加成员了。2. 构造函数创建一个类类型的对象时,编译器会自动使用一个构造函数来初始化该对象。构造函数初始化列表由成员名和带括号的初始值组成,跟在构造函数形参表之后,并以冒号开头。3. 成员函数在类内部定义的成员函数默认为inline。成员函数有一个附加的隐含实参原创 2014-06-18 18:11:23 · 756 阅读 · 0 评论 -
sdt:bind用法
bind - boost头文件: boost/bind.hppbind 是一组重载的函数模板.用来向一个函数(或函数对象)绑定某些参数. bind的返回值是一个函数对象. 它的源文件太长了. 看不下去. 这里只记下它的用法: 9.1 对于普通函数假如有函数 fun() 如下: void fun(int x, int y) { cout }现在我们看转载 2015-02-16 17:57:26 · 615 阅读 · 0 评论