gpt4 book ai didi

c - 哈希期间 C 中的内存分配错误

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:23 25 4
gpt4 key购买 nike

我是 C 编程的新手,我试图在我的代码中实现 typedef 和散列。但是当我尝试分配内存时出现编译错误 -

这是我的文件

#define MAX1 11
#define MAX2 23

typedef short IP[4];
typedef enum{TRUE = 1,FALSE = 0}boolean;

typedef struct
{
IP p;
char *comp_name;
}Element;

typedef struct
{
Element e;
boolean deleted; // deleted flag
boolean empty;
}Cell;
typedef Cell secLevelHashTable[MAX2];

typedef struct secLevelHashTable *FirstLevelHashTable[MAX1];

typedef struct FirstLevelHashTable hashTable;

这是我的主要代码-

#include"hashDef.h"
#include<stdio.h>
#include<stdlib.h>
void initFirstHTable(hashTable H)
{
int i,j;
for(i=0;i<MAX1;i++)
{
H. FirstLevelHashTable[i]=(secLevelHashTable *)malloc(sizeof(secLevelHashTable));
H.FirstLevelHashTable[i]->secLevelHashTable=malloc(sizeof(Cell)*MAX2);
for(j=0;j<MAX2;j++)
{
initSecHTables(H.FirstLevelHashTable[i]->secLevelHashTable[j]);
}
}


}

void initSecHTables(Cell *ptr)
{
ptr->deleted=0;
ptr->empty=1;
}





int main()
{
hashTable h;
h=malloc(sizeof(FirstLevelHashTable));
initFirstHTable(h);
return 0;
}

这是我得到的错误-

In function ‘main’:
hashOps.c:79:13: error: storage size of ‘h’ isn’t known
hashTable h;

最佳答案

下面的固定代码。它有许多小问题和一个大问题。

请阅读大篇相关文章:

struct in C: Error storage size of 'params' isn't known -- 这将解释“存储大小未知”错误;通过说 typedef struct FirstLevelHashTable hashTable; 你定义了一个未完成的结构,而不是引用现有类型。

头文件:

#define MAX1 11
#define MAX2 23

typedef short IP[4];
typedef enum{TRUE = 1,FALSE = 0}boolean;

typedef struct
{
IP p;
char *comp_name;
}Element;

typedef struct
{
Element e;
boolean deleted; // deleted flag
boolean empty;
}Cell;

typedef Cell secLevelHashTable[MAX2];
typedef secLevelHashTable* FirstLevelHashTable[MAX1];
typedef FirstLevelHashTable hashTable;

主要代码:

#include"hashDef.h"
#include <stdio.h>
#include <stdlib.h>

void initSecHTables(Cell *ptr)
{
ptr->deleted=0;
ptr->empty=1;
}

void initFirstHTable(hashTable H)
{
int i,j;
for(i=0;i<MAX1;i++)
{
H[i]=(secLevelHashTable *)malloc(sizeof(secLevelHashTable));
for(j=0;j<MAX2;j++)
{
initSecHTables(&((*H[i])[j]));
}
}
}

int main()
{
hashTable h;
initFirstHTable(h);
return 0;
}

关于c - 哈希期间 C 中的内存分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29162219/

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