所以我有一個任務,涉及在C++中創建一個虛構的內存管理器。下面是說明從C++的鏈接列表中刪除一個特定的項目
編寫一個C++程序,模擬操作系統的責任,將 內存分配給某些程序。這將是一個非常簡單的基於頁面的內存管理視圖。啓動時,您的程序將擁有32頁連續的,未使用的內存 。每頁將是4 KB長
我的問題是,當涉及到從鏈接列表中刪除特定的「程序」。這是我目前的DestroyProgram方法
void DestroyProgram(string proName) { //Deletes
Node* iterator = head;
while (iterator != NULL) {
if (iterator->programName == "FREE") {
int count = 0;
while (iterator != NULL && iterator->programName == "FREE") {
iterator->programName = "FREE";
iterator = iterator->nextProgram;
}
return;
count++;
}
else {
iterator = iterator->nextProgram;
}
}
cout << iterator->programName << " is not there.";
}
如果內存沒有被使用,它被標記爲FREE。所以即時通訊試圖說,如果程序名等於用戶輸入的程序名稱然後它被刪除。我只是困惑,爲什麼它不是工作
使用正確的工具隨時隨地解決這樣的問題是你的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –
第7行是不必要的......'iterator-> programName =「FREE」;',你已經檢查過它是否免費 – amanuel2
我們沒有看到'iterator-> programName'的類型。如果它是'char *',並且不起作用,那很正常。 –