1.malloc函数
函数原型为void*malloc(unsignedintsize);内存中在动态存储区域中分配“大小”字节的恒定度区域。 该函数的返回值是该范围的首地址。 “类型说明符”指示该区域用于什么类型的数据。 (类型说明符*)表示将返回值转换为该类型的指。 “大小”是一个无符号数。 例如:pc=(char*)malloc(100);意思是分配100字节的内存空间,并强将其转为字符数组类型。 该函数的返回值是一个指向字符数组的指。 电脑标变量。 如果大小超过可用空间,则返回空指值。
2.calloc函数
函数原型为void*calloc(unsignedintnum,unsignedintsize)
根据给定的数据个数和每个数据占用的字节数创建存储空间。 其中num为数据量,size为每个数据占用的字节数,所以开的总字节数为num*size。 该函数返回存储区的起始地址。 calloc函数和malloc函数唯一的区别是可以同时分配n块区域。 例如:ps=(structstu*)calloc(2,sizeof(structstu));其中sizeof(structstu)是求stu的结构度。 那么,这条语句的含义就是:根据stu的度分配2个连续的区域,强转换为stu类型,并将其首地址赋给指变量ps。
3realloc函数:
函数原型为void*realloc(void*ptr,unsignedintsize)
重新定义开辟的内存空间的大小。 ptr指向的内存空间已经该函数开,大小为新的空间大小,其值可以大于或小于原来的值。 该函数返回新内存区域的起始地址(该地址可能与之前的地址不同)。 例如:p1=(float*)realloc(p1,16);将原来分配的8字节调整为16字节。
**动态申请的内存空间必须使用free()函数手动释放
例如:
char*p;
p=(char*)malloc(8);//开辟8字节存储空间,为指p分配地址,通过指p访问空间。
*p='L';//存储字符,分配存储空间的第0个字节L
*(p+1)='o';//分配空间的第一个字节存储字符'o'.
★(p+2)='v';
★(p+3)='e';