所以我有一个任务,涉及在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 *',并且不起作用,那很正常。 –