Sunset
317 字
2 分钟
动态内存分配以及free函数的使用
动态内存分配以及free函数的使用
malloc 函数
int *a = (int *)malloc(n * sizeof(int));在这里,我们要开辟一块儿新的地址。
开辟的新地址用来存放指针a。malloc返回的类型是void,a是int形的,所以要把类型转换成int,用了强制转换(int *),n是数组a的长度,我们需要获取n*sizeof(int)长度的地址。
一旦对a进行了这样的操作,就可以把指针a当作数组使用。
free 函数
当然,申请了这样的内存之后必须要还回去,所以需要另一个操作:
free(a);注意事项
不能连续free两次
地址发生变化后不能对原地址free
进行了free之后我们需要把指针制空,否则会变为一个野指针干扰我们程序的运行,就是这样:
a = (int *)malloc(number * sizeof(int));free(a);printf("%d", a); // 这样的情况会输出野指针,杂乱的地址所以需要进行制空:
a = NULL;printf("%d", a);这样子再去输出a就不会有乱地址了。
特别提醒
动态内存分配获得的指针最好不要进行运算,不要改变它的指向,否则会出现无法释放的情况。
动态内存分配以及free函数的使用
https://vilstia.org/posts/学习笔记/c/动态内存分配以及free函数的使用/