我正在模擬器(計算機體系結構)上工作。 一段代碼讀取C++ std使用常量值列表初始化,它會改變性能嗎?
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]);
}
只是改變了常量numEntries已經對內存的使用有重大影響。如果我長時間運行程序(代碼做了很多push_back,列表上的pop_front),我碰到這個錯誤
終止在調用'std :: bad_alloc' 後調用what():std: :bad_alloc
有什麼區別?
寫入的代碼不會編譯,因爲int intEntries後面缺少分號。 –
我沒有看到兩者之間的語義差異,除了第二個分配更多的條目。並且沒有'std :: List' - 它是'std :: list'。你真的使用標準容器嗎? – Mat
是的,我使用std :: List,它只是我複製的代碼的一部分。 numEntries在別處被初始化。我想知道按const大小分配內存是否有所作用? – user2206344