堆和栈的区别:
栈的特征
执行的速度相对较快;
空间较小;
生存期由系统决定;
作用域较小;
有名空间,可以通过变量名或者数据名访问;
堆的特征
执行的速度相对较慢;
空间较大;
生存期由“自己”决定,malloc申请,free释放;
作用域很大(整个程序都可以访问);
无名空间,只能通过指针使用;
C语言空间的申请
malloc
功能:
分配 size 字节的未初始化内存。若分配成功,则返回指向分配内存块最低位(首位)字节的,为任何拥有基础对齐的对象类型对齐的指针。
头文件:
#include原型:
void* malloc( size_t size );
参数:
size - 要分配的字节数
返回值:
成功时:返回指向新分配内存的指针。为避免内存泄漏,必须用 free() 或 realloc() 解分配返回的指针。
失败时:返回空指针。
说明:
malloc申请的空间为连续空间;malloc申请的是没有初始化的空间;
返回值类型是void * 该类型表明malloc返回的地址空间中的数据类型是不确定,必须经过强制类型转换才可以使用。
realloc
功能: