1

プロジェクトで使い始めたばかりstd::variantです。私は疑問を持っています。std::variant以下に示すコードで、 のデストラクタは何をしますか。Variant はvoid*データを保持します。void*バリアントが範囲外になると、ポインターが指していた実際のオブジェクトではなく、メモリのみが解放されると思います。したがって、この場合、メモリ リークが発生します。私の理解が正しいかどうか知りたいです。

#include <iostream>
#include <memory>
#include <variant>
using namespace std;

class A {
    public:
    ~A(){
        cout<<"Destructor called"<<endl;
    }
};


int main() {
    std::variant<void*> data;
    A* b = new A();
    data = (void*)b;
    return 0;
}
4

2 に答える 2