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

运行截图:

相关推荐
普通网友1 小时前
共识算法实现:从工作量证明到权益证明的演进
算法·区块链·共识算法
颜x小2 小时前
[C#] C++与c#语法对比
开发语言·c++·c#
ldmd2842 小时前
地图生成算法(噪声篇-Perlin,Simplex,Value noise)
算法·go·地图生成
weixin_423652132 小时前
C#使用JObject
开发语言·c#
国科安芯2 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
小陈phd3 小时前
集成检索介绍
算法
小poop3 小时前
轮转数组:从暴力到最优,一题掌握算法复杂度分析
数据结构·算法·leetcode
樱桃读报僵尸3 小时前
说说 LLMRouter,Agent 执行过程中怎么动态的选择 LLM
算法
汉克老师3 小时前
GESP2026年3月认证C++八级( 第三部分编程题(2、子图最短路)精讲
c++·最短路·floyd·gesp8级
霸道流氓气质4 小时前
Java中集成Smile 技术教程:从入门到工程实践
java·开发语言