尝试初始化指针数组时,好像出现内存泄漏。这是我的代码:

void initLabelTable(){
    register int i;
    hashNode** hp;
    labelHashTable = (hashNode**) malloc(HASHSIZE*sizeof(hashNode*));
    hp = labelHashTable;
    for(i=0; i<HASHSIZE; i++) {
        *(hp+i) = NULL;
    }
}


更新:

我有以下代码:

c = fgetc(fp);

printf("%c",c);
line[MAXIMUM_LINE_LENGTH] = '\0';

initLabelTable();
c = fgetc(fp);


尽管第一个getc成功,但我在最后一行遇到了分段错误。
当我观看fp时,我看到了另一个地址。有任何想法吗?

最佳答案

不,此功能本身不会泄漏任何内存。它为labelHashTable分配内存,根据它的名称,它应该执行此操作。

一旦使用完labelHashTable所指向的内存,请确保将其释放,否则在那里会发生内存泄漏。另外,不要在每次后续调用之前不释放initLabelTable()的情况下反复调用labelHashTable

关于c - 如何在C上初始化和分配指向指针的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2533168/

10-11 21:36