Вызов delete для переменной, размещенной в стеке - PullRequest
52 голосов
/ 14 января 2009

Игнорируя стиль и дизайн программирования, безопасно ли вызывать delete для переменной, расположенной в стеке?

Например:

   int nAmount;
   delete &nAmount;

или

class sample
{
public:
    sample();
    ~sample() { delete &nAmount;}
    int nAmount;
}

Ответы [ 11 ]

0 голосов
/ 20 сентября 2012

Вы уже ответили на вопрос самостоятельно. delete должен использоваться только для указателей, открытых через new. Делать что-либо еще - это простое и неопределенное поведение.

Следовательно, на самом деле невозможно сказать, что происходит, что угодно, от кода, работающего нормально, до сбоя, до стирания вашего жесткого диска, является правильным результатом этого. Поэтому, пожалуйста, никогда не делайте этого .

...