一个关于C语言里面 MALLOC函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/05 05:18:56
book=(struct booktype *)malloc(LEN);这句是什么意思啊 ???
运行是错误提示是未定义的符号LEN在 KUCAOZUO函数中

生成一个长度为Len,类型为booktype的数组吧

malloc 的意思是分配内存举个例子

char *p = (char*)malloc(100);

就是分配100个字节长度的 char 类型内存

释放的时候要这样写

free(p);
p = NULL;

free 的意思是释放掉 malloc 开辟的内存,但是为了防止野指针(所谓野指针是程序编写的时候的一个疏忽造成的BUG,野指针经常会让程序崩溃)所以要加个 p = NULL;

在C++语言中也有个类似的

char *p = new char[100];
.....
delete[] p;
p = NULL;

作用基本是一样的.

另外这个语句也可以用来动态声明数组例如:

int *p = (int*)malloc(100);
....

free(p);
p = NULL;

这个声明就会有 p[0],p[1],p[2]..... 这样的数组.一共100个(即到p[99]) 当然其他类型如 char 类型数组也是这样声明的.

需要注意的是用完一定要释放 free(p);

*注意:释放完后一定要 p = NULL; 这句非常重要.