-3

我正在研究模拟器(计算机体系结构)。一段代码读取

List freeList;
const int numEntries
registers = new MSHR[numEntries];
for (int i = 0; i < numEntries; ++i) {
    registers[i].queue = this;
    freeList.push_back(&registers[i]);
}

我把它改成

List freeList;
int numEntries;
registers = new MSHR[numEntries + 100];
for (int i = 0; i < numEntries + 100; ++i) {
    registers[i].queue = this;
    freeList.push_back(&registers[i]);
}

仅更改 const numEntries 就对内存使用产生了巨大影响。如果我长时间运行程序(代码在列表中做了很多 push_back、pop_front),我会遇到这个错误

在抛出 'std::bad_alloc' what() 的实例后调用终止:std::bad_alloc

有什么区别?

4

1 回答 1

2

LMGTFY:文档说“分配内存失败时抛出异常”。

您正在尝试创建比您的记忆更多的对象。

既然numEntries没有初始化,那就是问题所在。

于 2013-08-05T04:53:38.913 回答