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

运行截图:

相关推荐
Godspeed Zhao2 分钟前
从零开始学AI16——SVM
算法·机器学习·支持向量机
yaoxin5211236 分钟前
406. Java 文件操作基础 - 字符与二进制流
java·开发语言·python
江屿风13 分钟前
C++OJ题经验总结(竞赛)1
开发语言·c++·笔记·算法
nebula-AI14 分钟前
人工智能导论:模型与算法(核心技术)
人工智能·深度学习·神经网络·算法·机器学习·集成学习·sklearn
运筹vivo@32 分钟前
LeetCode 2405. 子字符串的最优划分
c++·算法·leetcode·职场和发展·哈希表
数智工坊33 分钟前
视觉-语言-动作模型解剖学:从模块、里程碑到核心挑战
论文阅读·人工智能·深度学习·算法·transformer
有点。1 小时前
C++(枚举法一练习题)
开发语言·c++·算法
Klong.k1 小时前
如何避免Bean的线程安全问题
java·开发语言