This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSPF2812

我想动态建立一个数组,用完后就释放掉,问一下专家那里有没有一个应用的例子,我想参考一下

  • . 分配内存空间函数 calloc

    calloc 也用于分配内存空间。

    调用形式:

     (类型说明符*)calloc(n,size)

    功能:在内存动态存储区中分配n块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。

    (类型说明符*)用于强制类型转换。

    calloc函数与malloc 函数的区别仅在于一次可以分配n块区域。

    例如:

        ps=(struet stu*)calloc(2,sizeof(struct stu));

    其中的sizeof(struct stu)是求stu的结构长度。因此该语句的意思是:按stu的长度分配2块连续区域,强制转换为stu类型,并把其首地址赋予指针变量ps。

    . 释放内存空间函数free

    调用形式:

     free(void*ptr);

    功能:释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域。

    分配一块区域,输入一个学生数据。

    main()

    {

       struct stu

       {

         int num;

         char *name;

         char sex;

         float score;

       }  *ps;

       ps=(struct stu*)malloc(sizeof(struct stu));

       ps->num=102;

       ps->name="Zhang ping";

       ps->sex='M';

       ps->score=62.5;

       printf("Number=%d\nName=%s\n",ps->num,ps->name);

       printf("Sex=%c\nScore=%f\n",ps->sex,ps->score);

       free(ps);

    }

    本例中,定义了结构stu,定义了stu类型指针变量ps。然后分配一块stu大内存区,并把首地址赋予ps,使ps指向该区域。再以ps为指向结构的指针变量对各成员赋值,并用printf输出各成员值。最后用free函数释放ps指向的内存空间。整个程序包含了申请内存空间、使用内存空间、释放内存空间三个步骤,实现存储空间的动态分配。