C/C++内存分布
注意一些变量的分布,const,static,register等都是需要注意的地方。
C语言中动态内存管理方式
malloc/realloc/calloc的区别?
- 首先从函数参数上进行介绍,void * malloc(int n);void *calloc(int n,int size);void * realloc(void * p,int n);realooc是对内存的重新分配。
- 其次malloc,realloc需要手动初始化,而calloc则自动初始化。单独使用均需要free释放掉,
- 相同点:
1.都是从堆上申请空间
2.都需要对返回值判空
3.都需要用户free释放
4.返回值类型相同(void*)
5.都需要类型转化
6.底层实现上是一样的,都需要开辟多余的空间,用来维护申请的空间 - 不同点:
1.函数名字不同和参数类型不同。
2.calloc会对申请空间初始化,并且初始化为0,而其他两个不会。
3.malloc申请的空间必须使用memset初始化
4.realloc是对已经存在的空间进行调整,当第一个参数传入NULL的时候和malloc一样。 - 注意有时calloc和