2016-07-06 16 views
1

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?

+4

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 ! –

+0

Punkt genommen ... Ich kann mir nicht vorstellen, warum das vor Jahren keine Probleme verursacht hat. – Ryan

+2

... Tatsache ist, dass es wahrscheinlich * getan hat. * –

Antwort

4

Es ist sicherlich nicht Standard C++.

Eine delete sollte nur verwendet werden, wenn new verwendet wird. Sonst ist das Verhalten undefined.

2

Zumindest wie Sie es hier gezeigt haben, ist es einfach falsch.

Verwandte Themen