所以我創建了一個鏈表並打印出它的結果,但是當我嘗試釋放列表時它不起作用。釋放目標C中的鏈表?
這是我正在做它:
node = root;
node = [node next];
while([node next] != nil)
{
ListNode *temp;
temp = [node next];
free(node);
node = temp;
}
問題是,當我運行它,我只是得到一個錯誤,指出消息:Error in ./a.out: free(): invalid pointer: 0x0909720c
我不明白是什麼錯誤信息手段我不知道如何解決它。
這是接口:
@interface ListNode : NSObject
{
@private
int value;
ListNode* next;
}
- (id) setValue: (int) value_value;
- (int) value;
- (id) setNext: (ListNode*) next_value;
- (ListNode*) next;
@end
沒有足夠的代碼來解決問題,但通常情況下,您不應該在Objective-C對象上調用'free'。 – zneak
那麼如何刪除Objective C中的對象?如果您需要它,我可以向您展示更多代碼。 –
您應該可以顯示您的'@interface'代碼,您如何創建'ListNode'對象,並告訴我們您的項目中是否啓用了自動引用計數(ARC)(如果您使用的是最近足夠的Xcode,則是默認)。 – zneak