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

诺伯

我是C语言编程的新手,我试图在代码中实现typedef和哈希,但是当我尝试分配内存时遇到编译错误-

这是我的header档案

#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;

这是我的main代码-

#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;
Morfizm

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

请阅读相关文章的大篇幅:

C中的struct:“参数”的错误存储大小未知-这将解释“未知的存储大小”错误;通过说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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中的内存分配错误

来自分类Dev

C中的内存分配错误

来自分类Dev

C ++代码中的内存分配错误

来自分类Dev

C ++错误的内存分配异常

来自分类Dev

C上的内存分配错误

来自分类Dev

C ++中动态内存分配的运行时错误

来自分类Dev

析构函数,还可以为C ++中的特定哈希类分配内存

来自分类Dev

C中的结构内存分配

来自分类Dev

STL C ++中的内存分配

来自分类Dev

内存分配期间堆的损坏

来自分类Dev

Linux引导期间的内存分配?

来自分类Dev

如何在C程序(不是C ++)中处理运行时内存分配错误的指针错误?

来自分类Dev

我的哈希表C ++中的内存泄漏

来自分类Dev

在Dymola中获取内存分配错误

来自分类Dev

C ++,分配内存,分段错误:11

来自分类Dev

C中静态内存分配与动态内存分配的成本

来自分类Dev

在使用g ++的c ++和linux中协助解决内存分配错误

来自分类Dev

pthreads 如何导致 c 中的分段错误(尽管没有分配内存)?

来自分类Dev

尝试在 C 中的向量中分配内存时出现奇怪的错误

来自分类Dev

使用malloc进行动态内存分配期间出现分段错误

来自分类Dev

Java应用程序运行期间出现“无法分配内存”(errno = 12)错误

来自分类Dev

内存分配代码错误

来自分类Dev

scanf的内存分配错误

来自分类Dev

如何确定MSVC C ++中的内存分配?

来自分类Dev

在C中为Fortran可分配的内存

来自分类Dev

在C中,内存分配失败,为什么?

来自分类Dev

在c中重新分配char **的内存

来自分类Dev

C#中未分配变量的内存

来自分类Dev

在C中循环分配和释放内存