🎄第1章 认识指针
🍭指针和内存
C程序在编译后 会以三种形式使用内存 [1] 静态/全局内存:静态变量和全局变量的分配位置 [2] 自动内存:函数局部变量的分配位置 [3] 动态内存:堆内存
🍩声明指针
🍩阅读声明的技巧
🎄第2章 C的动态内存管理
🍭动态内存分配
int* pi;
// 推荐方式
pi = (int*)malloc(sizeof (int));
*pi = 200;
printf("*pi = %d\n", *pi);
free(pi);
内存泄漏
概述 如果已经不再使用的内存长时间没有释放 越积越多 最终可能会引发内存泄漏 导致内存泄漏的原因 [1] 丢失内存地址 [2] 应该free的内存没有free 造成堆内存被用尽(隐式内存泄漏)
丢失内存地址 简而言之 就是因为操作不当 无法再找回所分配的空间的起始地址 从而无法对孤立在堆上的那块内存做处理 它便会一直处于被分配的状态 无法被回收利用 造成系统资源的浪费
隐式内存泄漏 由于程序员的疏忽 没有及时将该释放的内存释放
🍭动态内存分配函数
函数 | 使用说明 |
---|---|
malloc | 从堆上分配内存 |
realloc | 在之前分配的内存块的基础上 将内存分配为更大或更小的部分 |
calloc | 从堆上分配内存并清零 |
free | 释放内存块 |