【发布时间】:2013-09-24 17:34:45
【问题描述】:
我创建了以下结构:
typedef struct {
char name[15];
int ID;
} Employee;
typedef Employee Item;
typedef struct {
Item items[5];
int size;
} List;
我正在使用这个函数调用来查看列表中存储的内容:
void Peek (int position, List *L, Item *X);
该函数应该将列表 [L] 中的 [位置] 中的项目复制到 [X]。我有这个 peek 功能:
void Peek (int position, List *L, Item *X) {
Item *B;
B = malloc(sizeof(L->items[position]));
X = B;
}
这会将 X 分配到与 B 相同的位置,但是我认为这会导致内存泄漏,更重要的是,如果我尝试在我的 main 中调用项目 X 的 ID,则从这个函数:
int EmployeeID (Employee X) {
return(X.ID);
}
我返回 32665 或类似的东西。将数据从 L 获取到 X 的另一种方法是什么?
【问题讨论】:
-
请在您的编译器中启用所有警告和调试信息(例如,Linux 上的
gcc -Wall -g);并学习如何使用调试器(例如gdb)。 -
调试器能否让我判断这是否是逻辑问题?
-
是的,你需要掌握调试器的使用方法。
标签: c pointers data-structures struct