
c/c++
文章平均质量分 68
漂泊的水手
简单,努力,好学
展开
-
new和delete的使用
总结C++中三种关于"new"的使用方法虽然有三种new的用法,但是分为两大类也未尝不可,那么是哪两类呢?其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧。new表达式比较常见,也最常用,例如:string* ps = new string("abc");上面这个new表达式转载 2012-12-22 15:55:42 · 517 阅读 · 0 评论 -
C++: 静态成员和子继承
Meyers在条款7中给出了一个用于实现 "class 专属的new-handlers ",用class X实现了一个 用template和inheritance实现了一个,在template版本中,Meyers解释说: 之所以使用inheritance是为了使derived class 也具有这种能力(class 专属的new-handlers)。 而之所以使用t转载 2013-01-10 14:30:19 · 862 阅读 · 0 评论 -
c++ 中operater delete和operater new重载
如果一个类中重载了operater delete (void* pMem)和 operater new(size_t nSize) 函数如: static void* operator new(size_t, void* pMem); static void operator delete(void*, void* pMem);同时则一定要定义如下的operator delete函原创 2013-02-01 11:44:06 · 1301 阅读 · 0 评论 -
c/c++操作mysql数据库
1.用到的数据结构#ifndef GLOBAL_H#define GLOBAL_H#include using std::string;struct Data_Param //数据库操作参数{ string db_name; //数据库名 string tab_name; //表名 string col_name; //列名转载 2013-02-19 12:06:30 · 2225 阅读 · 0 评论 -
关于c++的多态
c++多态分为两种:1.静态多态(静态绑定): 绑定发生在编译期.如函数重载--------两个函数名称一样,参数类型或个数不完全相同,函数的返回类型可以不一样.2.动态多态(动态绑定): 绑定发生在运行期. 动多态则是通过继承、虚函数(virtual)、指针(应用)来实现.例子1.#include #include #include class A原创 2013-01-14 14:39:43 · 536 阅读 · 0 评论 -
析构函数和虚析构函数
1. 析构函数和虚析构函数 如果基类的析构函数是虚的,那么它的派生类的析构函数都是虚的 这将导致:当派生类析构的时候,它的所有的基类的析构函数都将得到调用 否则,只调用派生类的析构函数(这可能导致基类的某些对象没有得到释放) 所以CObject类的析构函数是虚的,所有由它派生的类析构的时候一级一级的进行,不会造成内存泄漏。转载 2013-02-21 10:37:17 · 1192 阅读 · 0 评论 -
浅谈C语言位段
位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构体(联合体)称为位段结构。采用位段结构既能够节省空间,又方便于操作。 位段的定义格式为: type [var]: digits 其中type只能为int,unsigned int,signed int三种类型(int型能不能表示负数视编译器而定,比如V转载 2013-02-20 13:39:37 · 414 阅读 · 0 评论 -
c/c++ 个数据类的最大值宏定义
#include #include #include #include int main(void){clrscr();printf("char的位数:%u\n",CHAR_B99v);printf("char类型的最大值:%d\n",CHAR_MAX);printf("char类型的最小值:%d\n",CHAR_MIN);printf("signe转载 2013-03-26 11:50:37 · 4876 阅读 · 0 评论 -
MD5算法性能测试
MD5算法性能测试 (一) 实验目的本次实验的主要目的是测试中大量使用MD5运算是否对网站或者系统带来性能方面的影响。(二) 实验场景根据实验目的,设计了如下三个场景:1. 单线程下 运行5000次 计算平均时间(分别运算100K;转载 2012-09-18 21:40:32 · 13796 阅读 · 3 评论 -
tatic_cast、dynamic_cast reinterpret_cast和const_
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一转载 2012-09-18 15:05:24 · 593 阅读 · 0 评论 -
一种内存池实现技术和原理
一、为什么要使用内存池技术呢 主要有两个原因:1、减少new、delete次数,减少运行时间;2、避免内存碎片。 1、效率 c语言中使用malloc/free来分配内存,c++中使用new/delete来分配内存,他们的内存申请与释放都是与操作系统进行交互的。具体的内容在严蔚敏数据结构的第八章有相关讲述,主要就是系统要维护一个内存链表,当有一个内存申请过来时,根据相应转载 2012-09-17 13:39:59 · 876 阅读 · 0 评论 -
文件缓冲内容写到磁盘
c语言中的:标准IO 都有缓存区,这和系统缓冲不同,我们使用fflush()只保证了将IO缓冲写入系统缓冲中,使IO读操作能成功,但系统什么时候写入磁盘,由系统决定,一般是达到一定量时系统他就写入磁盘。当然可以强制系统将系统文件缓冲的内容写入磁盘:linux中可以使用sync命令或sync系统调用命令sync(1)也调用sync函数。值得注意的是sync函数只是将所有修原创 2012-03-30 10:09:04 · 7778 阅读 · 0 评论 -
C++:p2p通信,打洞技术,穿越NAT的实现
UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching)NAT设备的类型介绍:转载http://www.limou.net/?p=120NAT设备的类型对于TCP穿越NAT,有着十分重要的影响,根据端口映射方式,NAT可分为如下4类,前3种NAT类型可统称为cone类型。全克隆( Full Cone) : NAT把所有来自相同内部IP地址和转载 2012-04-06 10:46:53 · 5769 阅读 · 0 评论 -
详细解说STL hash_map系列
1 数据结构:hash_map原理这是一节让你深入理解hash_map的介绍,如果你只是想囫囵吞枣,不想理解其原理,你倒是可以略过这一节,但我还是建议你看看,多了解一些没有坏处。hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换转载 2012-04-23 17:22:52 · 662 阅读 · 0 评论 -
c++ 容器类 概括性介绍
C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确定,可以使用数组来存储,否则,就需要用到容器类了。 1、vector 连续存储结构,每个元素是在内存上是连续的; 支持高效的随机访问和在尾端插入/删除操作,但其他位置的转载 2012-04-18 14:23:53 · 602 阅读 · 0 评论 -
C/C++中的字节对齐
当在C/C++中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?标准对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密。 我们这里以ANSI C标准来进行讨论。首先,至少有一点可以肯定,那就是ANSI C保证结构体中各字段在内存中出现的位置是随它们的转载 2012-07-15 15:44:19 · 859 阅读 · 0 评论 -
linux中动态加载动态库的方法
功能:打开一个动态链接库 包含头文件: #include 函数定义: void * dlopen( const char * pathname, int mode); 函数描述: 在dlopen()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。使用dlclose()来卸载打开的库。 mode:分为这两种RTL原创 2012-07-19 15:04:06 · 19358 阅读 · 0 评论 -
C++静态成员函数小结
类的静态成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成转载 2012-07-21 13:04:31 · 615 阅读 · 0 评论 -
C++ new和delete重载
首先,new和delete是运算符,重载new和delete是可能的。这样做的原因是,有时希望使用某种特殊的动态内存分配方法。例如,可能有些分配子程序,他们的堆已耗尽,自动开始把一个磁盘文件当虚存储使用,或者用户希望控制某一片存储空间的分配等。重载new和delete的格式如下:void *operator new (size_t size){ .......//完成分配工作转载 2012-07-21 13:23:41 · 3768 阅读 · 0 评论 -
日期转换为星期快捷公式
计算一个日期是星期几,可以依据蔡勒公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1其中:w % 7 = 0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六y = YYYY的后2位,比如1989的89c = YYYY的前2位,比如1989的19m = MM,但是3d = DD,比如01[]表示取整转载 2012-09-07 16:00:37 · 1996 阅读 · 0 评论 -
windows和linux中程序栈空间
一般来说,我们所用的内存有栈和堆之分,其它的我们很少控制,栈的速度快,但是空间小、不灵活;而堆的空间几乎可以满足任何要求、灵活,但是相对的速度要慢了很多,并且在VC中堆是人为控制的,new了就要delete,否则很容易产生内存泄露等问题。系统 栈的字节数 bits digits 以兆为单位的值Linux 8192K byte转载 2013-07-26 10:15:20 · 4512 阅读 · 2 评论