gpt4 book ai didi

c - 为什么这段代码不在 C 中分配内存?

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:07 24 4
gpt4 key购买 nike

更新的问题在这里

Memory allocation problem in HashTable

我正致力于用 C 语言制作哈希表。这就是我所做的。我认为我正走在正确的道路上,但是当我尝试这样做时

ma​​in.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;
ListPtr mylist = (ListPtr)calloc(capacity, sizeof(ListPtr)); /* WHY IT DOESN'T ALLOCATE MEMORY FOR mylist HERE?? */
mylist->head = NULL;
mylist->size = 0;
mylist->tail = NULL;
hash->list = mylist;
return hash;

ListPtr 是一个链表指针

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 *);
};
...
...

当我运行调试器时,我发现没有内存分配给 myList。在上面的例子中,我的尝试是让它成为一个包含 10 个列表的数组。

请帮我解决这个问题。

如果有帮助的话,我不是 C 专家。

最佳答案

calloc(capacity, sizeof(ListPtr)

应该是

calloc(capacity, sizeof(List)

关于c - 为什么这段代码不在 C 中分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/827986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com