利用c++信号析构死循环中的资源

a.h:

复制代码
#include <iostream>
 int *a1 = new int[5];
using namespace std;
class AA
{
public:
	AA();
	~AA();
	void work();
   static void signalHandler(int signum);
private:
	
};

AA::AA()
{
}

AA::~AA()
{
}

a.cpp:

复制代码
#include "a.h"
#include <cstdlib>
#include <signal.h>
#include <unistd.h>
void AA::work() {
    // 注册信号处理程序
	signal(SIGINT, signalHandler);
	signal(SIGSEGV, signalHandler);
	signal(SIGTERM, signalHandler);
	int c = 0;
	while (true)
	{
		a1[c] = c + 1;
	}
    //后面的代码不会执行
	cout << 111 << endl;
}
void AA::signalHandler(int signum)
{
    delete[] a1;cout<<"delete a1"<<endl;
	// 退出程序
	std::exit(signum);
}
int main() {
	
	AA a;
	a.work();
}

运行截图:

相关推荐
叶子野格几秒前
《C语言学习:位运算》17
c语言·开发语言·c++·学习·visual studio
aWty_7 分钟前
实分析入门(12)--可测函数
学习·数学·算法·实变函数
RSTJ_162520 分钟前
PYTHON+AI LLM DAY SIXTY-FOUR
开发语言·python
海砥装备HardAus22 分钟前
无人机姿态解算中「重力矢量观测退化」机理与动态补偿技术
算法·无人机·飞控
广州灵眸科技有限公司23 分钟前
瑞芯微RV1126B开发板(EASY-EAI-PI2) 开发套件组装上电
网络·数据库·人工智能·算法·飞书
SuperHeroWu742 分钟前
【算法】强化学习中奖励和损失函数的关系
算法·环境·强化学习·损失函数·奖励
voidmort1 小时前
9. 微调(Fine-tuning)的数学原理
人工智能·算法·机器学习
覆东流1 小时前
Java开发环境搭建
java·开发语言·后端
阿洛学长1 小时前
VMware安装虚拟机教程(超详细)
java·linux·开发语言
rit84324991 小时前
链路预测(Link Prediction)MATLAB 实现
开发语言·matlab