ich durch einige alte Code bin zu graben, die ursprünglich in C++ Builder gebaut 6. Littered durch-aus der Code-Basis ist das folgende Muster, das, meiner Meinung nach, segfaults, wie es sollte:ausplanen Vektor von Primitiven
vector<int> x;
try {
... some run of the mill vector manipulation
} __finally {
delete &x;
}
Die delete &x;
ist wirklich seltsam. Wie ich es verstehe, existiert die vector<int>
nur für die Lebensdauer der Funktion, in der es enthalten ist, so dass Sie delete
darauf nicht anrufen müssen.
Gibt es eine vernünftige Motivation hinter diesem Muster, oder ist es einfach falsch?
Ich weiß nicht über "falsch", wenn Ihr Ziel ist, guten Code zu schreiben, das ist schrecklich, aber wenn Ihr Ziel ist, Menschen 10 Jahre nach dem Versuch zu versäumen, Ihren Code zu pflegen, ist dies perfekt, ideal, fantastisch ! –
Punkt genommen ... Ich kann mir nicht vorstellen, warum das vor Jahren keine Probleme verursacht hat. – Ryan
... Tatsache ist, dass es wahrscheinlich * getan hat. * –