大宇私人领地伊甸园丨宁愿做了后悔,也不要错过后悔[www.mrdayu.com]
注册

24小时联系邮箱:[email protected]

所有文章
大宇私人伊甸园: 首页 > 所有文章 > 编程人生 > C/C++语言 > calloc()函数详解


友情链接:


calloc()函数详解

发布时间:2018/11/22 C/C++语言 标签calloc阅读:43

函数原型:

extern void *calloc(int num_elems, int elem_size);

头文件:

#include <alloc.h>

功能:

为具有num_elems个长度为elem_size元素的数组分配内存

分配num_elems*elem_size大小的内存,并且自动内存置为0

Linux平台测试:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(){
        int i;
        char *p=(char *)calloc(20,sizeof(char));
        char *p2=(char *)malloc(20);
        for(i=0;i<20;i++){
                p[i]='c';
                p2[i]='m';
        }
        printf("calloc_p=%s\n",p);
        printf("malloc_p=%s\n",p2);
        return 0;
}

结果测试:

[[email protected] STDC]$ gcc stdc_calloc.c
[[email protected] STDC]$ ./a.out 
calloc_p=cccccccccccccccccccc
malloc_p=mmmmmmmmmmmmmmmmmmmm

结论:

和malloc的区别在于,calloc分配完内存后会置为0。

因为Linux平台gcc的优化,malloc分配的内存也会被置为0,所以就不做区别。

但我相信,windows不会让我失望。

Windows平台测试:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(){
	int i;
	char *p = (char *)calloc(20, sizeof(char));
	char *p2 = (char *)malloc(20);
	//for (i = 0; i<20; i++){
	//	p[i] = 'c';
	//	p2[i] = 'm';
	//}
	printf("calloc_p=%s\n", p);
	printf("malloc_p=%s\n", p2);
	getchar();
	return 0;
}

输出结果:

calloc_p=
malloc_p=屯屯屯屯屯屯屯屯屯屯
The bottom line, for me, is simple.

Let’s hope it doesn’t take 500 years for a discipline of testing to becomes the standard for software developers.

From:dayu

您好!请登录

合作网站快捷登录:
点击取消回复

已有0评论

    大宇博客

    点击这里给我发消息 点击这里给我发消息 点击这里给我发消息 点击这里给我发消息