尝试初始化指针数组时,好像出现内存泄漏。这是我的代码:
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/