您的位置:首页 > 其它

动态内存分配

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不会产生任何效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: