1.使用malloc函数分配空间
malloc函数的原型是:
void *malloc(unsigned int size);
函数的作用 : 在内存的动态储存区中分配一个长度为size的连续空间,并返回所分配第一个字节的地址.
看一下malloc的使用例子:
float *f = (float *)malloc(4);
char *c = (char *)malloc(1);
上面两个这种分配空间方式没有什么问题,分配长度为4的连续空间, 将函数原型的返回类型void *强制转换为float */char *, 并储存在指针f,c中.
上面方法是直接指定的分配的长度大小,但是如果遇到非已知长度,比如说自定义的结构体,我们无法知道他所占的内存长度,所以malloc通常和sizeof一起使用.
[改进] 使用sizeof配合malloc分配
sizeof的定义: sizeof是测量类型或者变量长度的运算符.
float *f = (float *)malloc(sizeof(float));
char *c = (char *)malloc(sizeof(char));
my_Struct *s1 = (my_Struct *)malloc(sizeof(my_Struct));
这样通过sizeof就可以直接测量变量的长度.
2. 使用free函数释放空间
free函数原型: :
void free(void *p);
函数作用:
释放指针变量p所指向的动态空间,使这部分空间可以被其他变量使用.
现在对之前申请的空间进行释放:
free(f);
free(c);
free(my_struct); //空间释放后这些变量将不能再进行引用了
分配完的内存计算机就会分配给其他需要分配空间的变量, 动态分配空间完进行释放是个好习惯,做到有始有终.