动态内存及释放内存崩溃原因
之前有提到字符串的定义是无法将数组长度写成变量的,那么,我们在工作中就受到了很大的局限性,所以我们引入例如动态内存。
1、 malloc(申请多少个字节)
需要引用的头文件为#include<stdlib.h>
小套路:
int *p = (int *)malloc(n * sizeof(int));
等同于int p[n];
2、 calloc(将所有元素初始化为0)
int *p = (int *)calloc(n * sizeof(int));
相当于:
int *p= (int *)malloc(n * sizeof(int));
for(inti = 0;I < 10;i++)
{
p[i] = 0;
}
3、 realloc(用来改变动态内存的大小)
p = (int *)realloc(p, 20* sizeof(int));
4、 free(内存泄漏)释放内存,如果不释放,内存就会泄漏。
free不需要长度是因为有头和尾信息。
free()崩溃的原因:
1、 越界(漏写sizeof,realloc第二个参数写错)
2、 修改指针的指向。
3、 重复释放同一段内存。
4、 释放非动态内存。