我在Ncurses中製作日曆,這意味着我必須動態分配和釋放內存。 Valgrind --leak-check = full顯示了new_item函數中的內存泄漏。這是我的代碼。我究竟做錯了什麼?Ncurses的'new_item'函數mem泄漏或我做錯了什麼?
unordered_map<int, ITEM**>
void NcurInterface::printMenu(GUIITEMS menu, GUIITEMS win)
{
typedef ITEM *items;
// Create items
int i;
items *mitem = (ITEM**)new items[manager->getNmbMenuItems(menu) + 1];
for(i = 0; i < manager->getNmbMenuItems(menu); i++) {
mitem[i] = new_item(manager->getMenuItemsString(menu, false, i).c_str(), manager->getMenuItemsString(menu, true, i).c_str());
}
mitem[i] = ((char)NULL);
setMenuItems(menu, mitem); // Insert in map
}
void NcurInterface::freeMenuItems(GUIITEMS menu)
{
items *clr = menuItems[menu];
for(unsigned char i = 0; i < manager->getNmbMenuItems(menu) + 1; i++) {
free_item(clr[i]);
}
menuItems.erase(menu);
delete[] clr;
}
Valgrind的輸出
1056(192直接,864間接)字節2塊損失記錄肯定丟失的62 92 在0x4C282B8:釋放calloc(在/ usr/LIB /的valgrind/(NITInterface.cpp:0x8491226):new_item(in /usr/lib/x86_64-linux-gnu/libmenu.so.5.9) by 0x4137BC:NcurInterface :: printMenu(GUIITEMS,GUIITEMS)(NcurInterface.cpp: 220) by 0x413467:NcurInterface :: updateMenu(GUIITEMS,GUIITEMS,GUIITEMS)(NcurInterface.cpp:185) by 0x417810 :主(NcurInterface.cpp:754)
([在編輯中回答的問題,轉換爲社區wiki](http://meta.stackoverflow.com/questions/267434/what-is-the-woole-action-when-the-answer-到一個問題,是添加到所述闕))。 – 2015-07-03 22:18:25