大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
c语言动态内存分配
成都创新互联公司专注于网站建设|网站建设维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖人造雾等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身开发品质网站。
主要初步介绍malloc、calloc、realloc、free的基本用法。都是标准的库函数,在stdlib.h库内。
malloc、free
分别用于动态内存分配和释放
,调用形式: (类型说明符*) malloc (size) ,“类型说明符”表示把该区域用于何种数据类型。(类型说明符*)表示把返回值强制转换为该类型指针,malloc分配的内存是位于堆上的,并且没有初始化内存的内容。malloc动态开辟一块长度为size字节的连续区域,size为需要内存空间的长度,返回该区域的首地址。用malloc分配存储空间时,必须由我们计算需要的字节数。如果想要分配10个int型的空间,那就是说需要10*sizeof(int)的内存空间。malloc分配的内存空间也有缺点,如果由malloc函数分配的内存空间原来没有被使用过,则其中的每一位都有可能是0,反之,如果这部分内存曾经被分配过,则其中可能遗留各种各样的数据。也就是说,使用malloc()函数分配内存时可能会出现问题。
int *p = (int *)malloc(10*sizeof(int));///分配完内存没有初始化
calloc 也用于分配内存空间。调用形式: (类型说明符*)calloc(n,size) ,在内存动态存储区中分配n块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。(类型说明符*)用于强制类型转换。calloc函数与malloc 函数的区别仅在于一次可以分配n块区域。 colloc与malloc类似,但是主要的区别是存储在已分配的内存空间中的值默认为0,使用malloc时,已分配的内存中可以是任意的值. colloc需要两个参数,第一个是需要分配内存的变量的个数,第二个是每个变量的大小.
int *q = (int *)calloc(5,sizeof(int)); //calloc = malloc + memset//分配完内存自动初始化
realloc(p,5*sizeof(char));更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小.如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,应使用free()函数将内存块释放。
注意:这里原始内存中的数据还是保持不变的。
*p = realloc(p,5*sizeof(char));//修改malloc分配内存大小