2012年12月11日
摘要: c++程序的内存格局通常分为四个区:全局数据区;代码区;栈区;堆区(即自由存储区)。 全局变量、静态数据、常量存放在全局数据区,所有类成员函数和非成员函数代码存放在代码区,为运行函数而分配的局部变量、函数参数、返回地址等存放在栈区,余下的空间都被称为堆区。new和delete,malloc和free,都从堆中分配和释放内存块,但在具体操作上两者有很大的区别。详细的内存分配情况见:http://www.cnblogs.com/heyonggang/p/3250220.html根据《C++内存管理技术内幕》一书,在C++中,内存分成5个区,他们分别是堆,栈,自由存续区,全局/静态存续区,常量存续区 阅读全文
posted @ 2012-12-11 22:26 猿人谷 阅读(968) 评论(0) 推荐(0) 编辑
摘要: 句柄和指针其实是两个截然不同的概念。Windows系统用句柄标记系统资源,用句柄隐藏系统的信息。你只要知道有这个东西,然后去调用就行了,它是个32bit的uint。指针则标记某个物理内存地址,是不同的概念。 句柄是一种指向指针的指针。 阅读全文
posted @ 2012-12-11 22:24 猿人谷 阅读(301) 评论(0) 推荐(0) 编辑
摘要: malloc和new有以下不同:new、delete是操作符,可以重载,只能在c++中使用。malloc、free是函数,可以覆盖,c、c++中都可以使用。new可以调用对象的构造函数,对应的delete调用相应的析构函数。malloc仅仅负责分配内存,free仅仅回收内存,并不执行构造和析构函数。new、delete返回的是某种数据类型指针,malloc、free返回的是void指针。注意:malloc申请的内存空间要用free释放,而new申请的内存空间要用delete释放,不要混用。因为两者实现的机理不同。有了malloc/free为什么还要new/delete?malloc/free是 阅读全文
posted @ 2012-12-11 22:23 猿人谷 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 第一个例子: char *ss="0123456789"; sizeof(ss)=4,ss是指向字符串常量的字符指针。 sizeof(*ss)=1,*ss是第一个字符。第二个例子: char ss[]="0123456789";sizeof(ss)=11, ss是数组,计算到“\0”位置,因此是(10+1)。 sizeof(*ss)=1,*ss是第一个字符。第三个例子: char ss[100]="0123456789";sizeof(ss)=100, ss表示在内存中预分配的大小,100*1。strlen(ss)=10,它的内部是用 阅读全文
posted @ 2012-12-11 22:23 猿人谷 阅读(596) 评论(1) 推荐(0) 编辑
摘要: 介绍: 设计内存池的目标是为了保证服务器长时间高效的运行,通过对申请空间小而申请频繁的对象进行有效管理,减少内存碎片的产生,合理分配管理用户内存,从而减少系统中出现有效空间足够,而无法分配大块连续内存的情况。目标: 此次设计内存池的基本目标,需要满足线程安全性(多线程),适量的内存泄露越界检查,运行效率不太低于malloc/free方式,实现对4-128字节范围内的内存空间申请的内存池管理(非单一固定大小对象管理的内存池)。内存池技术设计与实现 本内存池的设计方法主要参考SGI的alloc的设计方案,为了适合一般的应用,并在alloc的基础上做一些简单的修改。 Mempool的内存池设计方案如 阅读全文
posted @ 2012-12-11 22:19 猿人谷 阅读(591) 评论(0) 推荐(1) 编辑
摘要: 1.绝对的大牛,受益很多,特别是《数据结构》部分http://www.cnblogs.com/JCSU/articles/1305678.html在VMware Workstation的Ubuntu下安装和配置Hadoop与Ganglia:http://www.cnblogs.com/dolphin... 阅读全文
posted @ 2012-12-11 22:15 猿人谷 阅读(231) 评论(0) 推荐(0) 编辑
摘要: GSM就是Global System For Mobile Communication的缩写,意思是全球移动通信系统,就是我们所说的全球通。这个系统是由欧洲主要电信运营者和制造厂家组成的标准化委员会设计开发的。全球通是中国移动通信数字移动电话网所拥有的著名用户品牌。网号139,138,137,136,135都是属于GSM数字移动电话网的,只是 139,138最先开通使用,后来扩充到了这么多。他们的信号接收能力,拨号方法,覆盖范围,漫游地区,使用功能是一致的。下面来说说他的技术,他采用的是数字调制技术,关键之一是时分多址就是说每一个用户在某一个时间上选用载频并且只能在特定时间下收信息。GSM的主 阅读全文
posted @ 2012-12-11 22:14 猿人谷 阅读(938) 评论(0) 推荐(0) 编辑
摘要: c/c++ 宏中"#"和"##"的用法2007年05月14日 星期一 上午 10:19一、一般用法我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.用法:#i nclude<cstdio>#i nclude<climits>using namespace std; #define STR(s) #s#define CONS(a,b) int(a##e##b)int main(){ printf(STR(vck)); // 输出字符串"vck" printf("%d\n", CO 阅读全文
posted @ 2012-12-11 22:01 猿人谷 阅读(236) 评论(0) 推荐(0) 编辑
摘要: endl是一个特殊值,称为操纵符(manipulator),将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区(buffer)。通过刷新缓冲区,用户可立即看到写入到流中的输出。程序员经常在调试过程中插入输出语句,这些语句都应该刷新输出流。忘记刷新输出流可能会造成输出停留在缓冲区中,如果程序崩溃,将会导致对程序崩溃位置的错误判断。 阅读全文
posted @ 2012-12-11 18:17 猿人谷 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 1 #include<stdio.h> 2 int main() 3 { int n,i; 4 printf("please input a number:\n"); 5 scanf("%d",&n); 6 printf("%d=",n); 7 for(i=2;i<=n;i++) 8 { 9 while(n!=i)10 { 11 if(n%i==0)12 { printf("%d*",i);13 n=n/i;14 }15 else16 ... 阅读全文
posted @ 2012-12-11 17:42 猿人谷 阅读(261) 评论(0) 推荐(0) 编辑