动态内存分配
一、常用函数
函数名 | 全部单词 | 作用 |
---|---|---|
malloc | memory allocation | 申请空间(连续) |
calloc | contiguous allocation | 申请空间 + 数据初始化 |
realloc | re-allocation | 修改空间大小 |
free | free | 释放空间 |
二、函数的细节点
-
malloc创建空间的单位是字节
-
malloc返回的是void类型的指针,没有步长的概念,也无法获取空间中的数据,需要强转
-
malloc返回的仅仅是首地址,没有总大小,最好定义一个变量记录总大小
-
malloc申请的空间不会自动消失,如果不能正常释放,会导致内存泄漏
-
malloc申请的空间过多,会产生虚拟内存
-
malloc申请的空间没有初始化值,需要先赋值才能使用
-
free释放完空间之后,空间中的数据叫做脏数据,可能被清空,可能被修改为其他值
-
calloc就是在malloc的基础上多了一个初始化的动作
-
realloc修改之后的空间,地址值有可能发生变化,也有可能不会改变,但是原本的数据不会丢失
-
realloc修改之后,无需释放原来的空间,函数底层会进行处理
三、C语言的内存结构