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