当前位置:  开发笔记 > 编程语言 > 正文

如何为结构数组动态分配内存

如何解决《如何为结构数组动态分配内存》经验,为你挑选了1个好方法。

我对C很新,并且无法弄清楚如何将连续内存分配给结构数组.在这个赋值中,我们给出了代码的shell,并且必须填写其余部分.因此,我无法更改变量名称或函数原型.这是给我的:

#include 
#include 
#include 

struct student {
    int id;
    int score;
};

struct student *allocate() {
    /* Allocate memory for ten students */
    /* return the pointer */
}

int main() {
    struct student *stud = allocate();

    return 0;
}

我只是不确定如何去做那些评论在分配功能中所说的内容.



1> chqrlie..:

分配和初始化数组的最简单方法是:

struct student *allocate(void) {
    /* Allocate and initialize memory for ten students */
    return calloc(10, sizeof(struct student));
}

笔记:

calloc(),不像malloc()将内存块初始化为所有位零.因此,数组中的字段idscore所有元素都被初始化为0.

将学生数量作为参数传递给函数是个好主意allocate().

free()当您不再需要它时,它被认为是分配内存的好方式.你的教练没有暗示你应该free(stud);在返回之前调用main():虽然不是绝对必要的(当程序退出时,程序分配的所有内存都由系统回收),这是一个很好的习惯,可以更容易地找到内存泄漏在较大的节目中.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有