发生C++销毁类错误

Ale*_*lex 1 c++ oop class

当我执行时,这个程序有什么问题,我希望类被破坏,但程序结束后我看到cout fetch后的错误框.问题是什么?

#include <iostream>
using namespace std;

class user {

    public:int internal;
    public:user(int point) {
               internal = point;
           };

           ~user () {
               cout << "Fetch";
           }
    };



void main() {
    user gil(5);
    user * p;
    p=&gil;
    delete p;
    getchar();
}
Run Code Online (Sandbox Code Playgroud)

Cat*_*lus 8

调用delete未从中接收的指针new是未定义的行为.IOW,你的代码错了,不这样做,gil有自动存储,无论如何都会自动销毁(duh).


Alo*_*ave 5

您的代码具有未定义的行为.您正在调用delete未分配的指针new.
一旦你有一个未定义的行为,所有的赌注都会关闭,任何行为都是可能的.

一旦{ }创建它们的范围结束,自动(堆栈)存储上的对象就会被释放,不需要调用delete它们.