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

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

之前有提到字符串的定义是无法将数组长度写成变量的,那么,我们在工作中就受到了很大的局限性,所以我们引入例如动态内存。

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、      释放非动态内存。

猜你喜欢

转载自blog.csdn.net/C_f_hhh/article/details/80160926