C 结构数组中的动态内存分配

问题描述 投票:0回答:1

void addWorkerToProject(Worker *worker, Project *project) {



    worker->projects =  malloc(sizeof (strlen(project)+1));


    worker->projects[worker->projectCount]->name =  project->name;

   
    worker->projectCount++;
  


}


    struct Worker

    char *name;
    Project **projects;
    int projectCount;



    struct Project

    char *name;
    Worker **workers;
    int workerCount;
    FeatureNode *features;

如何让这个功能正确运行?它应该将工作人员分配给项目,但未能将 2 个项目分配给同一个工作人员。感谢您的帮助(:

假设我有一个名叫肖恩的工人,有两个项目分别名为第一和第二。我需要将它们附加到肖恩,例如当我打印workers[i]->projects[j]->name时,当每次迭代为他添加1个项目时,它们都需要出现。 rn 当我运行它时,第一次迭代是正确的,但第二次迭代不起作用。

c malloc realloc
1个回答
0
投票

您的代码存在多个问题。

malloc(sizeof (strlen(project)+1))
将始终返回整数的大小。即 4 字节/8 字节,具体取决于您的机器/操作系统。 我觉得你想做的事情如下:

void addWorkerToProject(Worker *worker, Project *project) {
    worker->projects[worker->projectCount] =  malloc(sizeof(Project));
    worker->projects[worker->projectCount]->name = project->name;
    worker->projectCount++; 
}
© www.soinside.com 2019 - 2024. All rights reserved.