可以直接用的啊,但是又些时候,我们的一个表中,到底有多少个成员我们是不知道的,这时候,就可以利用这个函数来分配空间,将得到的成员加入到表中,这样就不会有因为有多余的空间而浪费了内存空间,或者因为少定义了成员数,而无法加入新的成员,。。很方便的,一般它是很结构体一起使用的,用于建立动态的数据表。。。很有用的,慢慢体会吧。。
一般来说,结构体定义的变量可以直接用,但是指针变量一般还是要用malloc申请内存空间,还有就是用来动态分配内存空间
当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,即malloc函数。
malloc函数原型:extern void *malloc(unsigned int num_bytes);
头文件:#include
功能:分配长度为num_bytes字节的内存块
返回值:如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。
说明:关于该函数的原型,在以前malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。
程序示例:
typedef struct data_type{
intage;
charname[20];
}data;
data*bob=NULL;
bob=(data*)malloc(sizeof(data));
if(bob!=NULL)
{
bob->age=22;
strcpy(bob->name,"Robert");
printf("%sis%dyearsold\n",bob->name,bob->age);
}
else
{
printf("mallocerror!\n");
exit(-1);
}
free(bob);
bob=NULL;
malloc用来根据需要,动态分配内存空间。
指针初始化时使用,用完释放。