DSP

动态内存及释放内存崩溃原因

2019-07-13 17:17发布

动态内存及释放内存崩溃原因之前有提到字符串的定义是无法将数组长度写成变量的,那么,我们在工作中就受到了很大的局限性,所以我们引入例如动态内存。1、      malloc(申请多少个字节)需要引用的头文件为#include小套路:int *p = (int *)malloc(n * sizeof(int));等同于int p[n];2、      calloc(将所有元素初始化为0int *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、      释放非动态内存。