一个关于C语言里面 MALLOC函数的问题
来源:百度知道 编辑:UC知道 时间:2024/05/05 05:18:56
book=(struct booktype *)malloc(LEN);这句是什么意思啊 ???
运行是错误提示是未定义的符号LEN在 KUCAOZUO函数中
运行是错误提示是未定义的符号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; 这句非常重要.