动态内存管理
首先明确动态内存开辟的空间在堆上,没有在栈或者静态区里,而且如果不用free,此空间就一直在,不会被销毁。
动态内存管理的函数:
1.malloc:
void* malloc(size_t size):要开辟的字节数。如果要用指针接收,必须强制类型转换。
char* p = (char*)malloc(100); //开辟100个字节的空间
if(p!= NULL)
{
//继续执行代码
}
2.free:
free§:释放内存块的首地址
记得free后,将指针赋为空指针,**
free(p);
p = NULL;
3.calloc:
void *calloc( size_t num, size_t size ):两个参数,第一个是要开辟空间的数目,第二个是要开辟数目的大小,并且会将开辟的空间全部置0;相当于malloc+memset。
char* p= calloc(10,sizeof(char));//开辟10个字节的大小的空间
if(p!=NULL)
{
//继续执行代码
}
4.realloc
void *realloc( void *memblock, size_t size ):第一个参数是这块空