C语言动态存储管理:malloc, free, realloc
需积分: 15 2 浏览量
更新于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 上传
2023-09-05 上传
2023-03-31 上传
2023-06-21 上传
2024-10-27 上传
2024-11-03 上传
2024-10-27 上传
杜浩明
- 粉丝: 15
- 资源: 2万+
最新资源
- 深入了解Django框架:Python中的网站开发利器
- Spring Boot集成框架示例:深入理解与实践
- 52pojie.cn捷速OCR文字识别工具实用评测
- Unity实现动态水体涟漪效果教程
- Vue.js项目实践:饭否每日精选日历Web版开发记
- Bootbox:用Bootstrap实现JavaScript对话框新体验
- AlarStudios:Swift开发教程及资源分享
- 《火影忍者》主题新标签页壁纸:每日更新与自定义天气
- 海康视频H5player简易演示教程
- -roll20脚本开发指南:探索roll20-master包-
- Xfce ClassicLooks复古主题更新,统一Linux/FreeBSD外观
- 自建物理引擎学习刚体动力学模拟
- Python小波变换工具包pywt的使用与实例
- 批发网导航程序:自定义模板与分类标签
- 创建交互式钢琴键效果的JavaScript库
- AndroidSunat应用开发技术栈及推介会议