【发布时间】:2010-12-11 17:10:26
【问题描述】:
公司结构定义如下:
typedef struct company {
char* company_name;
int employee_counter;
} company;
我使用这个函数来创建一个新的公司节点:
company *make_company_node(char* company_name, int employee_counter) {
company *newNode = (company*) malloc(sizeof(company));
if(!newNode) return NULL;
newNode->company_name = company_name;
newNode->employee_counter = employee_counter;
return newNode;
}
然后我从输入中得到一些公司名称,为每个创建公司节点:
companyUnion->company_arr[i] = make_company_node(company_name, 0);
(company_arr 最终包含指向所有公司的指针)。
问题是我似乎总是覆盖最初分配的内存空间,因此最后我得到一个数组,其单元格都指向最后一家公司(提交的姓氏)。
我怎样才能纠正它,使它不会被覆盖而是总是分配新的空间?
【问题讨论】:
-
你的代码看起来不错,你确定它没有发生是因为没有正确索引 companyUnion 的变量吗?
标签: c arrays memory allocation