305 字
2 分钟
Loading
动态内存分配以及free函数的使用
2023-10-23

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函数的使用/
作者
琴泠
发布于
2023-10-23
许可协议
CC BY-NC-SA 4.0