1
我有一個哈希表存儲實現與商店一個typedef結構的條目,並有一個函數,查詢整個表,以查看條目的數據是否符合一組特定的條件。我實現了這個問題的方法是服務器,以調用函數利用Valgrind和釋放特殊數組指針
Entry **queryReturns = tableQuery(params);
和功能項指針數組返回分配內存。
(在tableQuery功能:)
Entry **tableQuery(params) {
//Process params and get expected results
Entry **returnEntries = (Entry *)malloc(j * sizeof(Entry *));
//Code to copy pointers into the array
return returnEntries;
}
當服務器功能與完成這件事,我只能與
free(queryReturns);
取消此分配因爲我不想刪除實際我要存儲的數據元素,我只想取消分配這個臨時數組指針,但Valgrind生成此消息:
205,816 bytes in 96 blocks are definitely lost in loss record 17 of 17
at 0x4C28BED: malloc (vg_replace_malloc.c:263)
by 0x4086D1: tableQuery (Table.c:798)
by 0x403808: handle_command (server.c:645)
by 0x403F05: threadCall (server.c:799)
by 0x52B3B4F: start_thread (pthread_create.c:304)
我應該擔心這會導致內存泄漏,還是應該忽略它?
查看'tableQuery()'代碼或文檔,並檢查如何釋放由其分配的內存。 – Rohan
「* //將指針複製到數組中的代碼*」哪些指針? – alk
tableQuery是我自己創建的函數。這些指針指向指向與查詢匹配的數據元素的指針。該函數返回這些數組,以便服務器可以直接訪問數據元素。投下的 – anarian