C语言动态存储管理:malloc, free, realloc
需积分: 15 115 浏览量
更新于2024-07-13
收藏 299KB PPT 举报
"这篇复习资料主要涵盖了C语言中的动态存储管理,包括malloc()、free()和realloc()函数的使用,以及宏定义、typedef的应用和指针的基础知识。"
在C语言中,动态存储管理允许程序员在程序运行时按需分配和释放内存。这对比静态内存分配(在编译时确定大小)提供了更大的灵活性。动态内存分配函数主要有三个:
1. **malloc()**: 这个函数用于在堆上动态地分配指定大小的内存。其函数原型为`void* malloc(unsigned int size)`,返回一个指向新分配内存的无类型指针。例如,要分配20个整数大小的空间,可以写为`int *p = (int *)malloc(20 * sizeof(int))`。分配成功返回非空指针,失败则返回NULL。
2. **free()**: 当动态分配的内存不再需要时,使用free()函数来释放内存,防止内存泄漏。例如,释放前面分配的内存可以写为`free(p)`。确保在释放内存前,保存了malloc的返回值,因为一旦丢失,内存就无法被正确释放。
3. **realloc()**: 该函数用于调整已分配内存区域的大小。函数原型为`void* realloc(void* ptr, size_t size)`,接受一个已分配内存的指针和新的大小,如果扩展成功,返回指向新内存区域的指针,原有内存区域的数据会保留;如果收缩内存,多余的内存会被释放;如果分配失败,原有的内存仍然有效,返回NULL。使用realloc时需要注意,如果返回NULL,原来的内存仍然有效,所以通常需要在调用后检查返回值,以防止丢失原内存。
除了动态存储管理,复习资料还提到了宏定义和typedef的使用:
- **宏定义**:宏定义是预处理器的一项功能,用于文本替换。无参数的宏定义如`#define OK1`,带参数的宏定义如`#define S(a, b) a * b`,可以简化代码并提高可读性。
- **typedef**:typedef允许创建新的类型名,简化类型声明。例如,`typedef int ElemType`,然后可以用`ElemType e, *p`来声明变量e和指针p,而无需每次写`int`。此外,还可以定义数组类型,如`typedef int ARR[10]`,使得声明数组更简洁。
最后,复习资料中提到了**指针**,它是C语言的重要特性。指针变量存储的是其他变量的内存地址,类型不同的指针占用的内存字节数相同。使用`&`运算符获取变量的地址,`*`运算符用来解引用指针。定义指针变量时,例如`int *p`,然后可以使用`p = &a`或`p = &d`来赋值。正确理解和使用指针是掌握C语言的关键。
2010-03-09 上传
2009-03-02 上传
2010-06-05 上传
2021-07-14 上传
2022-02-06 上传
2010-09-30 上传
2022-09-19 上传
2022-07-02 上传
2013-08-07 上传
杜浩明
- 粉丝: 13
- 资源: 2万+
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常