高质量C++/C编程指南 -- 第7章 内存管理 P6
来源:互联网 发布:stata软件多少钱 编辑:程序博客网 时间:2024/05/09 22:09
http://www.bccn.net/Article/kfyy/cjj/jc/200512/2634_6.html
7.10 malloc/free 的使用要点
函数malloc的原型如下:
void * malloc(size_t size);
用malloc申请一块长度为length的整数类型的内存,程序如下:
int *p = (int *) malloc(sizeof(int) * length);
我们应当把注意力集中在两个要素上:“类型转换”和“sizeof”。
u malloc返回值的类型是void *,所以在调用malloc时要显式地进行类型转换,将void * 转换成所需要的指针类型。
u malloc函数本身并不识别要申请的内存是什么类型,它只关心内存的总字节数。我们通常记不住int, float等数据类型的变量的确切字节数。例如int变量在16位系统下是2个字节,在32位下是4个字节;而float变量在16位系统下是4个字节,在32位下也是4个字节。最好用以下程序作一次测试:
cout << sizeof(char) << endl;
cout << sizeof(int) << endl;
cout << sizeof(unsigned int) << endl;
cout << sizeof(long) << endl;
cout << sizeof(unsigned long) << endl;
cout << sizeof(float) << endl;
cout << sizeof(double) << endl;
cout << sizeof(void *) << endl;
在malloc的“()”中使用sizeof运算符是良好的风格,但要当心有时我们会昏了头,写出 p = malloc(sizeof(p))这样的程序来。
u 函数free的原型如下:
void free( void * memblock );
为什么free函数不象malloc函数那样复杂呢?这是因为指针p的类型以及它所指的内存的容量事先都是知道的,语句free(p)能正确地释放内存。如果p是NULL指针,那么free对p无论操作多少次都不会出问题。如果p不是NULL指针,那么free对p连续操作两次就会导致程序运行错误。
- 高质量C++/C编程指南 -- 第7章 内存管理 P6
- 高质量C++/C编程指南 -- 第7章 内存管理 (1)
- 高质量C++/C编程指南 -- 第7章 内存管理 (2)
- 高质量C++/C编程指南 -- 第7章 内存管理 (2)
- 高质量C++/C编程指南 -- 第7章 内存管理 (1)
- 高质量C++/C编程指南 -- 第7章 内存管理
- 高质量C++/C编程指南 -- 第7章 内存管理
- 读书笔记-高质量C++/C编程指南-第7章 内存管理
- 高质量C++/C编程指南 -- 第7章 内存管理
- 高质量C++/C编程指南 -- 第7章 内存管理
- 高质量C++/C编程指南 -- 第7章 内存管理 P1
- 高质量C++/C编程指南 -- 第7章 内存管理 P2
- 高质量C++/C编程指南 -- 第7章 内存管理 P3
- 高质量C++/C编程指南 -- 第7章 内存管理 P4
- 高质量C++/C编程指南 -- 第7章 内存管理 P5
- 高质量C++/C编程指南 -- 第7章 内存管理 P7
- 高质量C++/C编程指南 -- 第7章 内存管理 (1)
- 高质量C++/C编程指南 -- 内存管理之一
- 最长公共子序列(LCS)问题(非连续子序列)的两种解法
- 虚函数、纯虚函数详解
- 高质量C++/C编程指南 -- 第7章 内存管理 P5
- Android进阶2之图片倒影效果 .
- 虚拟继承
- 高质量C++/C编程指南 -- 第7章 内存管理 P6
- Java数据结构课程设计 构造Huffman树
- 某高手之C++面试经验与试题汇总
- ajaxanywhere
- 利用creat创建链表 利用outlist打印链表 利用 fun 函数 返回链表中最大的值
- 我的Android笔记(十)—— ProgressDialog的简单应用,等待提示
- 高质量C++/C编程指南 -- 第7章 内存管理 P7
- call center流程描述
- 坑爹的UITabBarController