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

运行截图:

相关推荐
深蓝电商API4 分钟前
爬虫任务调度:APScheduler 定时执行
开发语言·爬虫·python
kang_jin5 分钟前
超详细 Python 爬虫指南
开发语言·爬虫·python
Sylvia-girl7 分钟前
C语言-1入门
c语言·开发语言
Rust语言中文社区7 分钟前
【Rust日报】 CEL与Rust实现接近原生速度的解释执行
开发语言·后端·rust
C+++Python11 分钟前
C++ 策略模式实战:从原理到落地
开发语言·c++·策略模式
IT北辰19 分钟前
不规则 Excel“数据提取——教师课表自动汇总实战
开发语言·爬虫·python
天疆说22 分钟前
【拓扑学+航天轨道动力学】同伦(Homotopy)概念解析
人工智能·算法·拓扑学
勿芮介24 分钟前
【研发工具】OpenClaw基础环境安装全教程-Node\NVM\PNPM\Bash
开发语言·node.js·bash·ai编程
JamesYoung797125 分钟前
第七部分 — 存储 数据建模与迁移提示
java·开发语言·数据结构
爱装代码的小瓶子26 分钟前
【c++与Linux进阶】线程篇 -互斥锁
linux·c++·算法