【发布时间】:2010-10-24 02:35:59
【问题描述】:
请不要以duplicate question 结尾。我做了一个重要的更改,以免混淆,我重新提交了更清晰的代码。
请帮我解决这个内存分配问题。我正在研究一个 HashTable,这就是我所拥有的(仅部分代码)
main.c
HashTablePtr hash;
hash = createHashTable(10);
insert(hash, "hello");
insert(hash, "world");
HashTable.c
HashTablePtr createHashTable(unsigned int capacity){
HashTablePtr hash;
hash = (HashTablePtr) malloc(sizeof(HashTablePtr));
hash->size = 0;
hash->capacity = capacity;
hash->list = (ListPtr *)calloc(capacity, sizeof(List)); /*NO MEMORY ALLOCATION HERE*/
return hash;
List.h
typedef struct list List;
typedef struct list * ListPtr;
struct list {
int size;
NodePtr head;
NodePtr tail;
};
...
...
HashTable.h
typedef struct hashtable * HashTablePtr;
typedef struct hashtable HashTable;
struct hashtable {
unsigned int capacity;
unsigned int size;
ListPtr *list;
unsigned int (*makeHash)(unsigned int, void *);
};
...
...
当我运行我的调试器(Netbeans C/C++ 调试器,我看到没有内存分配给 hash->list。在上面的例子中,我的尝试是让它成为一个包含 10 个列表的数组。
请帮我解决这个问题。
如果有帮助的话,我不是 C 方面的专家。
【问题讨论】:
标签: c memory memory-management