以这种方式mallocing对象是非法的吗?

时间:2016-01-29 15:53:27

标签: c linked-list malloc

我有一个while循环,在while循环的每个itteration中我都是malloc一个struct对象。然后在循环结束时,我将它添加到链表的末尾。现在我担心的是,每当我在循环中使用malloc时,我都有相同的变量名,所以我不知道在将最新的malloced对象附加到链表之后这是如何工作的,我在malloced中拥有的其他对象会发生什么。一样的名字。

我的代码:

struct Student{ 
   char *name;
   int IDno;
}Student;

someFunction(){
x = 0;

while(x!=6){
    Student *name = malloc(sizeof(Student));   <----- Confusion here

    addToLinkedList(LinkedListStruct,name);
}

我每次在循环中都name被malloced是没关系的。有人可以向我解释如果我以这种方式使用malloc会发生什么,将它添加到链表的末尾,然后进入下一个循环并执行相同的操作。

1 个答案:

答案 0 :(得分:1)

malloc()调用与您为其指定返回值的变量的名称无关。 malloc()并不知道您将其返回值分配给名为name的变量。你所做的是完全有效和明确的定义。

尽管malloc()返回指向内存区域的指针而不是内存本身,但代码仍然存在错误。因此声明应该是

Student *name = malloc(sizeof (Student));