利用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();
}

运行截图:

相关推荐
风吹迎面入袖凉3 分钟前
【Redis】Redisson分布式锁原理
java·服务器·开发语言
A.A呐3 分钟前
【QT第五章】系统相关
开发语言·qt
Mapleay6 分钟前
CLion IDE 使用
c++
李白你好8 分钟前
Java GUI-未授权漏洞检测工具
java·开发语言
兵哥工控12 分钟前
MFC用高精度计时器实现五段时序控制的改进
c++·mfc
leo__52024 分钟前
拉丁超立方抽样(Latin Hypercube Sampling, LHS)MATLAB实现
开发语言·matlab
会编程的土豆24 分钟前
日常做题 vlog
数据结构·c++·算法
sycmancia26 分钟前
Qt——Qt中的标准对话框
开发语言·qt
22信通小白28 分钟前
USRP初学者使用手册(基础配置及bug记录)——Linux+Clion(单台X310收发)
linux·运维·c++·5g·bug·信息与通信
橙露42 分钟前
Python 对接 API:自动化拉取、清洗、入库一站式教程
开发语言·python·自动化