我正在研究模拟器(计算机体系结构)。一段代码读取
List freeList;
const int numEntries
registers = new MSHR[numEntries];
for (int i = 0; i < numEntries; ++i) {
registers[i].queue = this;
freeList.push_back(®isters[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(®isters[i]);
}
仅更改 const numEntries 就对内存使用产生了巨大影响。如果我长时间运行程序(代码在列表中做了很多 push_back、pop_front),我会遇到这个错误
在抛出 'std::bad_alloc' what() 的实例后调用终止:std::bad_alloc
有什么区别?