c 动态内存分配

来源:互联网 发布:沙龙 陈奕迅 知乎 编辑:程序博客网 时间:2024/05/16 17:38

C语言中提供的动态内存分配为了解决数组的静态的分配方式的问题:即数组大小必须在定义时指定,程序在运行时不能动态改变数组的大小 。

在标准库<stdlib.h>中提供了三个动态内存分配的函数供程序调用,下面将分别对这三个函数进行介绍:

1.  void *malloc(size_t size)

malloc 在分配一段连续的内存时,不会初始化该内存区并且返回指向该段内存区的首地址,当内存分配失败时返回NULL;通常我们在成功分配内存后在使用前要使用memset来初始化该内存区。

2.void * calloc(size_t n,size_t size)

该函数在动态存储区(堆)中分配n个长度为size的连续存储空间,并且对该段连续的内存空间初始化成0,如果分配失败则返回NULL,成功则返回指向首地址的空间。

3. void *realloc(void *ptr, size_t size)

该函数重新分配内存空间的大小,当ptr指向的区域空间足够时,则直接返回ptr的指针,若ptr指向的空间区域不够时,则新分配size个大小的空间,并将ptr指向的内存数据内容拷贝到新的空间,同时返回新的首地址,当ptr == NULL时,该函数相当于malloc。当size == 0时,则等同于free(ptr);

 

原创粉丝点击