こんにちは、私はプログラムの実行中に 1 つのクエリを持っています。セグメンテーション違反が発生した場合、自動作成されたオブジェクトのデストラクタを呼び出すことができます。私は1つのコードを書いており、意図的にセグメンテーション違反を作成して、デストラクタが呼び出されるかどうかを確認しています。
#include<iostream>
using namespace std;
class hello
{
public:
int b;
};
class test
{
public :
hello *ptr;
int a;
void function()
{
ptr = new hello;
}
test()
{
cout<<"constructor called"<<endl;
}
~test()
{
cout<<"destructor called"<<endl;
delete ptr;
}
};
int main()
{
test obj;
obj.function();
obj.a = 500;
test *ptr ;
ptr-> a = 900; //To create segmentation fault
}
出力: 呼び出されたコンストラクター
デストラクタは呼び出されていません。そのため、デストラクタ内で「new」を使用して作成されたオブジェクトを削除できません