精华内容
下载资源
问答
  • calloc

    2014-11-01 14:54:50
    calloc

    calloc编辑

    calloc是一个ISO C函数
    函数名: calloc
    函数原型:void *calloc(size_t n, size_t size);
    功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。
    外文名
    calloc
    函数名
     calloc
    函数原型
    void *calloc
    功 能
    动态存储中分配n为size连续空间
    头文件
    相关函数
    领    域
    编程

    1函数简介编辑

    malloc的区别:
    calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。
    用 法: void *calloc(size_t n, size_t size);
    一般使用后要使用 free(起始地址的指针) 对内存进行释放,不然内存申请过多会影响计算机的性能,以至于得重启电脑。如果使用过后不清零,还可以使用指针对该块内存进行访问。
    头文件:stdlib.hmalloc.h
    相关函数:mallocreallocfree _alloca

    2应用举例编辑

    程序例1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
     
    intmain(void)
    {
    char*str=NULL;
    /*分配内存空间*/
    str=(char*)calloc(10,sizeof(char));
    /*将hello写入*/
    strcpy(str,"Hello");
    /*显示变量内容*/
    printf("Stringis%s\n",str);
    /*释放空间*/
    free(str);
    return0;
    }

    程序例2

    从这个例子可以看出calloc分配完存储空间后将元素初始化。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<stdio.h>
    #include<stdlib.h>
    intmain(void){
    inti;
    int*pn=(int*)calloc(10,sizeof(int));
    for(i=0;i<10;i++)printf("%3d",pn[i]);
    printf("\n");
    free(pn);
    return0;
    }
    输出十个0。
    展开全文
  • calloc

    2008-08-07 08:28:00
    calloc 原型:extern void *calloc(int num_elems, int elem_size); 用法:#include 功能:为具有num_elems个长度为elem_size元素的数组分配内存 说明:如果分配成功则返回指向被分配内存的指针,否则返回空指
     
    
    calloc
    null.gif null.gif
      原型:extern void *calloc(int num_elems, int elem_size);
      
      用法:#include <alloc.h>
      
      功能:为具有num_elems个长度为elem_size元素的数组分配内存
      
      说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
            当内存不再使用时,应使用free()函数将内存块释放。
      
      举例:
    
          // calloc.c
          
          #include <syslib.h>
          #include <alloc.h>
    
          main()
          {
            char *p;
            
            clrscr();        // clear screen
    
            p=(char *)calloc(100,sizeof(char));
            if(p)
              printf("Memory Allocated at: %x",p);
            else
              printf("Not Enough Memory!/n");
              
            free(p);
    
            getchar();
            return 0;
          }
          
      相关函数:,,
    
    展开全文
  • malloc calloc

    2019-12-23 23:42:25
    在这里插入代码片 //malloc的函数原型 void *malloc(unsigned size);...malloc 和 calloc的功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成...
    在这里插入代码片
    //malloc的函数原型 
    void *malloc(unsigned size);
    //calloc的函数原型
    void *calloc(unsigned n,unsigned size);

    realloc 是真的难搞,我不会。


    malloc 和 calloc的功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL(值为0)。
    malloc calloc的区别:calloc在动态分配完内存后,自动初始化该内存空间为零,但是malloc不会自动初始化,所以里边数据是随机的垃圾数。

    看代码吧。

    在这里插入代码片
    #include<stdio.h>//
    #include<stdlib.h>//调用malloc 和 calloc所需的头文件也可以换成 #include<malloc.h>
    int main(void) 
    {
     int *a,*b;
     a = (int*)malloc(sizeof(int)*5);
     for(int j = 0; j < 5; j++ ) 
     {
      printf("%d ",a[j]);
     }
     printf("\n");
     b = ( int* )calloc(5,sizeof(int));
     for(int j = 0; j < 5; j++ ) 
     {
      printf("%d ",b[j]);
     }
     return 0;
    }

    结合图片,第一行是malloc的,垃圾数对吧。
    第二行是calloc的,全部都初始化了。

    在这里插入图片描述
    relloc的还不熟悉。不敢写。
    malloc 为二维数组分配空间:点这里:
    二维数组
    malloc 为1维数组分配空间:点这里:
    一维数组

    展开全文
  • calloc函数

    2019-09-22 04:27:04
    calloc函数 calloc不同于malloc,是对所分配的内存初始化。测试程序如下: *****APUE中很重要的一句话:calloc将分配的内存空间初始化为0。但是ANSI C并不保证0值与浮点0或空指针的值相同。 #include...

    calloc不同于malloc,是对所分配的内存初始化。测试程序如下:

    *****APUE中很重要的一句话:calloc将分配的内存空间初始化为0。但是ANSI C并不保证0值与浮点0或空指针的值相同。

    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>

    void calloc_int(void);
    void calloc_char(void);
    void calloc_float(void);
    void calloc_ptr(void);

    int main()
    {
            calloc_int();
            calloc_char();
            calloc_float();
            calloc_ptr();
            exit(0);
    }

    void calloc_int(void)
    {
            int *ptr2;
            int idx;

            printf("/n******** calloc_int start ********/n");

            ptr2 = (int *)calloc(10, sizeof(int));

            printf("After calloc: ptr = %p/n", ptr2);

            printf("Ptr = ");

            for(idx=0; idx<10; idx++){
                    //ptr2[idx] = '0';
                    printf("%d ",ptr2[idx]);
            }
            printf("/n");

            free(ptr2);

            return;
    }

    void calloc_char(void)
    {
            char *ptr;
            char idx;

            printf("/n******* calloc_char start *********/n");

            ptr = (char *)calloc(64, sizeof(int));

            printf("After calloc: ptr = %p/n", ptr);

            printf("Ptr = ");

            for(idx=0;idx<10;idx++){
                    printf("%d ", ptr[idx]);
            }
            printf("/n");

            free(ptr);

            return;
    }

    void calloc_float(void)
    {
            float *ptr;
            char idx;

            printf("/n******* calloc_float start **********/n");

            ptr = (float *)calloc(64, sizeof(float));

            printf("After calloc: ptr = %p/n", ptr);

            printf("Ptr = ");

            for(idx=0; idx<10; idx++){
                    printf("%f ", ptr[idx]);
            }
            printf("/n");

            free(ptr);

            return;
    }

    void calloc_ptr(void)
    {
            int **ptr;
            char idx;

            printf("/n******* calloc_ptr *********/n");

            ptr = (int **)calloc(10, sizeof(int *));

            printf("Ptr = ");

            for(idx=0; idx<10; idx++){
                    printf("%p", ptr[idx]);
            }
            printf("/n");

            free(ptr);

            return;
    }

    结果如下:

    ******** calloc_int start ********
    After calloc: ptr = 0x80499a8
    Ptr = 0 0 0 0 0 0 0 0 0 0

    ******* calloc_char start *********
    After calloc: ptr = 0x80499d8
    Ptr = 0 0 0 0 0 0 0 0 0 0

    ******* calloc_float start **********
    After calloc: ptr = 0x80499d8
    Ptr = 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

    ******* calloc_ptr *********
    Ptr = (nil)(nil)(nil)(nil)(nil)(nil)(nil)(nil)(nil)(nil)

    结论: 可对char, int, float, pointer都可以初始化,确认好用

    posted on 2009-07-09 17:30 SunBo 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/sunyubo/archive/2009/07/09/2708322.html

    展开全文
  • malloc与calloc

    千次阅读 2019-05-10 22:12:02
    在gcc编译器中malloc与calloc它们都是实现内存分配。但是也有点小区别,就是malloc分配内存不会将数据清零,而calloc则会将数据清零。
  • malloc,calloc区别

    万次阅读 多人点赞 2018-03-07 10:28:50
    C语言的标准内存分配函数:malloc,calloc,realloc,free等。 malloc与calloc的区别为1块与n块的区别: malloc调用形式为(类型*)malloc(size):在内存的动态存储区中分配一块长度为“size”字节的连续区域,返回...
  • calloc的使用

    千次阅读 2019-03-04 14:36:17
    void *calloc( size_t num, size_t size ); 应用 // crt_calloc.c // This program uses calloc to allocate space for // 40 long integers. It initializes each element to zero. ...
  • malloc和calloc

    2019-09-12 13:33:08
    malloc和calloc都可以用来动态分配内存,但是两者稍有差别。calloc在分配完内存后,还会对申请的内存进行初始化为零,很多场景我们会考虑性能,不会对申请的内存做全量清零,因此不能直接用calloc替换malloc。 ...
  • calloc和mallocHere in this tutorial you will learn about difference between malloc() and calloc() in C. 在本教程的这里,您将学习C语言中malloc()和calloc()之间的区别。 We all know that memory is ...
  • malloc和calloc函数在参数个数、初始化内存空间、函数返回值上有区别: 1、参数个数上的区别: malloc函数:malloc(size_t size)函数有一个参数,即要分配的内存空间的大小。 calloc函数:calloc(size_t ...
  • calloc函数一般调用形式: (类型说明符 *)calloc(n,size) 类型说明符为强制类型转换,n和size的作用是在内存动态存储区域中分配n块长度为size字节的连续存储区域,函数返回值为该区域首地址。 例如: struct ...
  • malloc calloc realloc

    2019-11-06 10:10:47
    /* realloc的机制:如果比原来分配的内存要大,有两种情况 1、如果原来空间的后面有足够大的空间,那么直接在后面继续开辟内存,返回原来 的地址 2、如果原来空间的后面没有足够大的空间,那么系统...calloc和malloc...
  • linux calloc

    千次阅读 2014-03-13 20:50:43
    函数原型:void *calloc(unsigned n, unsigned size); 功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。 目录 1函数...
  • malloc calloc free

    2017-10-04 16:49:49
    malloc,calloc,realloc都用free释放空间 malloc头文件为#include,没有默认的初始值,比如: int *a; a=(int *)malloc(n*sizeof(int)); free(a); calloc头文件为#include或#include,有默认的初始值,比如: ...
  • malloc realloc calloc

    2019-07-21 06:49:28
    三个函数大多使用在c语言函数的指针当中为指针分配地址,他们的原型分别如下:...void *calloc(num,unsigned size);他们包含在stdlib.h的函数里,一般使用sizeof()函数分配size的大小。 1)malloc用于申请一段新的地...
  • realloc malloc calloc

    2018-12-28 19:43:14
    三个函数的申明分别是:  void* realloc(void* ptr, ...void* calloc(size_t numElements, size_t sizeOfElement);  都在stdlib.h函数库内 它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL  mallo...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,258
精华内容 2,103
关键字:

calloc