草庐IT

cxa_atexit

全部标签

python - 在 Python 中使用 atexit 注册实例方法有什么意义?

假设我有一些非常大的Python类,可能会消耗大量内存。该类有一些方法负责在解释器退出时清理一些东西,并在atexit模块中注册:importatexitimportosclassReallyBigClass(object):def__init__(self,cache_file):self.cache_file=open(cache_file)self.data=atexit.register(self.cleanup)defcleanup(self):os.remove(self.cache_file)这个类的各种实例可能会在程序的整个生命周期中来来去去。我的问题是:如果我用del

python - 当 python 进程被杀死时运行 atexit()

我有一个在后台运行的python进程,我希望它仅在脚本终止时生成一些输出。defhandle_exit():print('\nAllfilessavedin'+directory)generate_output()atexit.register(handle_exit)调用引发KeyboardInterupt异常和sys.exit()正确调用handle_exit(),但如果我要执行kill{PID}从终端终止脚本而不调用handle_exit()。有没有办法终止在后台运行的进程,并且在终止之前仍然运行handle_exit()? 最佳答案

iphone - 我如何知道何时可以安全地忽略 All Exceptions 断点上的 __cxa_throw?

我使用的是Xcode4.5.1。我认为这是我看到的相对较新的行为。我更喜欢在启用“所有异常”断点的情况下开发和测试我的项目。我遇到过这样一种情况,我正在将缩略图图像加载到TableView中的单元格中,但出现了__cxa_throw异常。当我单击“继续执行程序”按钮时,Xcode继续其愉快的方式。我得到了缩略图。应用程序似乎工作正常。我正在寻找一些关于如何确定这是否可以安全忽略的提示。就像一些关于理解堆栈跟踪的指针?还是别的?这是代码片段:NSString*imageStr=item.thumbURL;imageStr=[imageStrstringByAddingPercentEsc

c++ - __cxa_finalize 和 __attribute__

据我所知,一个程序(在Linux中用C++编写)在退出main函数时调用__cxa_finalize。我创建了一个共享库并在主函数中使用了这个库。我想在主程序加载/卸载这个库时采取一些行动。我发现函数__attribute__在创建共享库时可以用于该目的(我猜这个函数应该在共享库代码中实现)我添加了如下内容:void__attribute__((constructor))my_load(void);void__attribute__((destructor))my_unload(void);我在以下链接中实现了函数my_load和my_unload:http://tdistler.co

c - atexit()注册了多少个函数?

我们遇到了一个问题,即第3方库使用atexit()注册了一些函数。有什么方法可以知道注册了多少(或哪些)功能?我检查了here但它说不。我尝试使用sysconf获取ATEXIT_MAX,但结果是一个巨大的数字,如2^31-1。有什么办法可以让它发挥作用吗? 最佳答案 您可以尝试潜入您自己的atexit()函数,有效地覆盖原始函数,然后协议(protocol)第三方软件对它的每次调用。但这可能不是您要找的。 关于c-atexit()注册了多少个函数?,我们在StackOverflow上找到

c++ - "cxa"中的 "__cxa_demangle"前缀是什么意思?

我有一段代码,其中我看到了__cxa_前缀。例如,以下摘录包含它:std::unique_ptrown(#ifndef_MSC_VERabi::__cxa_demangle(typeid(TR).name(),nullptr,nullptr,nullptr),#elsenullptr,#endifstd::free);我很乐意对cxa的含义进行一些解释。 最佳答案 这只是函数名,但可能是CXxAbi。 关于c++-"cxa"中的"__cxa_demangle"前缀是什么意思?,我们在St

在 Linux 上动态链接到 libc 时调用 `atexit`

如果我有以下用C编写的程序(在Debian8.7上用GCC编译),我可以像您期望的那样调用atexit():#includevoidexit_handler(void){return;}intmain(){atexit(exit_handler);return0;}当我编译并运行它时:$gcctest.c$./a.out正如您所期望的那样,不输出任何内容。事实上,当我运行ldd时,我得到:$ldda.outlinux-vdso.so.1(0x00007fffbe592000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007fe07d3

android.mk arm-linux-androideabi-g++ 异常和 __cxa_allocate_exception

我正在从源代码重建Android(以闪存到设备上,现在使用模拟器),尝试添加一个命令行工具。我已将我的源代码放在repo/exernal/...并编写了Android.mk。我得到以下未定义:__cxa_allocate_exception__cxa_begin_catch__cxa_end_catch__cxa_end_cleanup__cxa_free_exception__cxa_get_exception_ptr__cxa_rethrow__cxa_throw__gxx_personality_v0我在这里搜索了具有相同未定义的其他问题,但似乎无法找到适用于Android的解决

c - 在 atexit() 中释放

在atexit()函数中释放内存有什么意义吗?我有一个全局变量,在启动后会被malloc'ed。我可以写一个atexit()函数来释放它,但是当程序退出时系统不会回收所有内存吗?自己整理并积极清理有什么好处吗? 最佳答案 不是在C中-这就像在船沉没在你周围时重新布置躺椅。在C++中,答案是不同的,因为对象可以在其析构函数中删除临时文件等,因此您需要确保它们被调用。 关于c-在atexit()中释放,我们在StackOverflow上找到一个类似的问题: htt

c++ - SWIG 包装库中 __cxa_allocate_exception 期间的段错误

在为Ruby开发一个SWIG封装的C++库时,我们在C++代码内的异常处理过程中遇到了无法解释的崩溃。我不确定重新创建问题的具体情况,但它首先发生在调用std::uncaught_exception期间,然后在一些代码更改后,移至__cxa_allocate_exception在异常构造期间。GDB和valgrind都没有提供任何有关崩溃原因的见解。我找到了几个类似问题的引用资料,包括:http://wiki.fifengine.de/Segfault_in_cxa_allocate_exceptionhttp://forums.fifengine.de/index.php?topic