微信有网站开发吗长沙seo计费管理
这三个函数都是在堆区分配内存的函数,头文件都是:
#include<stdlib.h>
下面分别介绍这三个函数:
malloc:
函数原型:
void *malloc(unsigned int num_bytes);
功能:堆区开辟一段内存空间
num_nytes:要开辟的内存字节数
返回值:新开辟内存的首地址
初始值:随机
常规用法:
int* a = malloc(sizeof(int)*10);
calloc:
函数原型:
void *calloc(size_t n, size_t size);
功能:堆区开辟一段内存空间
n:n个数
size:每个数的字节数
返回值:新开辟内存的首地址
初始值:0
常规用法:
int b = calloc(10, sizeof(int));
realloc:
函数原型:
void *realloc(void *mem_address, unsigned int newsize);
功能:修改以前在堆区分配过的内存大小
mem_address:以前分配过内存地址
newsize:修改后的字节数
返回值:修改内存大小后的地址
常规用法:
int* c = malloc(10*sizeof(int));
c = realloc(c, 20); //新内存大小为20
注意:
newsize如果小于以前的size,那么就会缩减,如果继续访问不在缩减后的地址,会报错。
newsize如果大于以前的size,分两种情况:原地址后面有足够空间分配newsize个地址,返回原地址;原地址后面不够分配,那么会重新找一块内存,把原来的值复制过来,返回新地址。