扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
c语言动态内存分配
成都创新互联公司主营元宝网站建设的网络公司,主营网站建设方案,成都app软件开发公司,元宝h5重庆小程序开发公司搭建,元宝网站营销推广欢迎元宝等地区企业咨询主要初步介绍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分配内存大小
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流