动态内存分配
2017-05-31 10:00
190 查看
1.malloc
void *malloc(size_t size)malloc的参数就是要分配的字节数,如果内存池中可用的内存满足这个条件,malloc就返回一个指向被分配的内存块起始位置指针。
malloc分配的是一块连续的内存,如果内存池是空的,或者它的内存无法满足要求,malloc就返回一个NULL指针。因此,对malloc返回值就行NULL检查是必要的。
2.calloc
void *calloc(size_t num_elements,size_t element_size)
calloc和malloc一样,它分配num_elements*element_size个字节的内存,和malloc不同的地方是,calloc会把这块内存初始化为0.
3.realloc
void *realloc(void *ptr,size_t new_size)
realloc用于修改一个原先已经分配的内存块大小,使用这个函数可以使一块内存块扩大或者缩小。第一个参数是指向内存块的指针,第二个参数是修改后的内存大小。
如果原先的内存块无法满足改变大小的要求,realloc将分配另一块正确大小的内存,并把原先的内容复制过去,。因此,在使用realloc之后,最好不要使用指向旧内存的指针,而是使用realloc返回的指针。
4.free
void free(void *ptr)free的参数要么是NULL,要么是malloc、calloc或realloc返回的值。
free一个NULL不会产生任何效果。