0
我有一個結構「ListStruct」,它基本上是一個結構「Info」的動態數組。這裏是我創建ListStruct:釋放動態字符數組*
void initArray(ListStruct *a, size_t initialSize)
{
a->array = malloc(initialSize * sizeof(Info));
a->used = 0;
a->size = initialSize;
}
的結構「信息」中有幾個整數,它有一個int密鑰大小和一個char *鍵。我這是怎麼分配的信息結構中的「字符*鍵」:
element->key = malloc(keySize*sizeof(char));
在我freeArray功能,我越來越對上環的第二迭代「雙自由或損壞」的錯誤。這裏是代碼:
void freeArray(ListStruct *a)
{
int temp;
for(temp=0; temp<a->used; temp++)
{
free(a->array[temp].key);
a->array[temp].key=NULL;
//reset some ints
}
free(a->array);
a->array = NULL;
a->used = a->size = 0;
}
這可能是一個愚蠢的錯誤,但我做錯了什麼?
編輯:發現錯誤。檢查解決方案的意見
[不要投出'malloc'的結果](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) –
'a-> array = malloc (initialSize * sizeof * a-> array;' – wildplasser
好吧,我不再投射。仍然出錯 – BlueMoon93