我已經定義了一個指針列表。在清除清單之前,我應該如何釋放所有這些指針?清除所有列表成員的最佳方法是什麼?在下面的程序中,是否需要釋放爲struct分配的內存?看到我的內嵌評論。清除C++中的STL指針列表
struct MyStruct {
char *data;
int len;
};
typedef std::list<struct MyStruct *> myStruct_list;
myStruct_list l_list;
/* Prepare a list */
for(int i = 0; i < 10; i++) {
struct MyStruct *s = (MyStruct *)malloc(sizeof(struct MyStruct));
s->data = (char*)malloc(MAX_LEN);
get_random_data(s->data,size);
s->len = strlen(s->data);
l_list.push_back(s);
}
/* Delete all members from a list */
myStruct_list::iterator it;
for (it = l_list.begin(); it != l_list.end(); ++it) {
if (*it) {
free(*it); // --->> do I need to free (*it)->data ?????
}
}
l_list.clear();
爲什麼你甚至使用指針在這裏?我認爲沒有理由這樣做,如果你刪除它們,那麼你不必擔心泄漏:) – NathanOliver
你爲什麼使用malloc?這段代碼的一半看起來更像c而不是C++。 –
'std :: list :: iterator它;'我很抱歉,你是從過去?但是,嚴重的是,如果你不在這裏使用一些遺留系統,你確實需要更新你的學習資料。 –
George