《c语言从入门到精通》看书笔记——第15章 存储管理
来源:互联网 发布:淘宝网电器城 编辑:程序博客网 时间:2024/05/17 09:16
1、内存的组织方式
程序被组织成以下4个逻辑段
(1)可执行代码
(2)静态数据。可执行代码和静态数据存储在固定的内存位置
(3)动态数据(堆)。程序请求动态分配的内存来自内存池,也就是上面所列举的堆。
(4)栈。局部数据对象、函数的参数以及调用函数和被调用函数的联系放在成为栈的内存池中。
堆和栈可以是被所有同时运行的程序共享的操作系统资源,也可以是使用程序独占的局部资源。
2、堆和栈
(1)堆
在内存的全局存储空间中,用于程序动态分配和释放的内存块称为自由存储空间,通常也称之为堆。
在C程序中,是用malloc和free函数来从堆中动态地分配和释放内存。
(2)栈
当程序调用函数和声明局部变量时,系统将自动的分配内存。
栈是一个后进先出的压入弹出式的数据结构。
94动态管理
(1)malloc函数
void *malloc(unsigned int size);
在stdlib.h头文件中包含该函数,作用是在内存中动态的分配一块size大小的内存空间。malloc函数会返回一个指针,该指针指向分配的内存空间,如果出现错误,则返回NULL。
注意:使用malloc函数分配的内存空间是在堆中,,而不是在栈中。因此在使用完这块内存后一定要将其释放掉,释放内存空间使用的是free函数。
(2)calloc函数
void *calloc(unsigned n,unsigned size);
使用该函数也要包含stdlib.h头文件,其功能是在内存中动态的分配n个长度为size的连续内存空间数组。calloc函数会返回一个指针,该指针指向动态分配的连续内存空间地址。当分配空间错误时,返回NULL。
(3)realloc函数
void *realloc(void *ptr,size_t size);
使用该函数要包含头文件stdlib.h,其功能是改变ptr指针指向的空间大小为size大小。返回值是一个指向新地址的指针,如果出现错误,则返回NULL。
(4)free函数
void free(void *ptr);
free函数的功能是使用由指针ptr指向的内存区,使部分内存区能被其他变量使用。ptr是最近一次调用calloc或malloc函数时返回的值。free无返回值。
3、内存丢失
在使用malloc等函数分配内存后,要对其使用free函数进行释放。因为内存不进行释放会造成内存遗漏,从而可能会导致系统崩溃。
0 0
- 《c语言从入门到精通》看书笔记——第15章 存储管理
- 《c语言从入门到精通》看书笔记——第2章 算法
- 《c语言从入门到精通》看书笔记——第3章 数据类型
- 《c语言从入门到精通》看书笔记——第6章 选择结构程序设计
- 《c语言从入门到精通》看书笔记——第7章 循环控制
- 《c语言从入门到精通》看书笔记——第8章 数组
- 《c语言从入门到精通》看书笔记——第9章 函数
- 《c语言从入门到精通》看书笔记——第10章 指针
- 《c语言从入门到精通》看书笔记——第12章 位运算
- 《c语言从入门到精通》看书笔记——第13章 预处理
- 《c语言从入门到精通》看书笔记——第14章 文件
- 《c语言从入门到精通》看书笔记——第1章 C语言的概述
- 《c语言从入门到精通》看书笔记——第4章 运算符与表达式
- 《c语言从入门到精通》看书笔记——第5章 常用的数据输入输出函数
- 《c语言从入门到精通》看书笔记——第11章 结构体和共用体
- 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络
- 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(下)——套接字
- C语言从入门到精通笔记
- 【Leetcode】Invert Binary Tree
- UI 第九天 UITableView
- Mac OS X版本历史
- 3D引擎:Horde3D的 Resource类
- 分布式的消息队列系统——Kafka
- 《c语言从入门到精通》看书笔记——第15章 存储管理
- iOS UIScrollView实用之图片轮播 —— HERO博客
- LightOJ 1031-Easy Game
- python学习笔记(4)
- git如何回退到原来之前一个版本
- wmic
- Android API级别
- 一个简单的创建圆角图像的UIImage扩展实现
- android滑动事件监听