Onkel Schuppig
Erfahrenes Mitglied
Hallo zusammen,
der unten gezeigte Code-Schnipsel reagiert merkwürdig. Ich möchte möglichst am Stück Speicher reservieren. Wenn das nicht möglich ist, dann die Hälfte.
Wenn das auch nicht möglich ist, dann ein Viertel, usw. Beim Test mit zu großem n springt die Routine auch wie beabsichtigt in den catch-Block. Aber danach geht es nicht etwa im try-Block weiter, sondern es wird eine weitere Ausnahme geworfen namens "privileged instruction". Was stimmt denn da nicht?
Info: facemap ist eine std::map und freefaces ein std::vector.
der unten gezeigte Code-Schnipsel reagiert merkwürdig. Ich möchte möglichst am Stück Speicher reservieren. Wenn das nicht möglich ist, dann die Hälfte.
Wenn das auch nicht möglich ist, dann ein Viertel, usw. Beim Test mit zu großem n springt die Routine auch wie beabsichtigt in den catch-Block. Aber danach geht es nicht etwa im try-Block weiter, sondern es wird eine weitere Ausnahme geworfen namens "privileged instruction". Was stimmt denn da nicht?
Info: facemap ist eine std::map und freefaces ein std::vector.
Code:
FaceMap::size_type n(facemap.size());
while (true) {
try {
freefaces.reserve(n);
break;
} catch (bad_alloc) {
n /= 2;
}
}