gpt4 book ai didi

c++ - 让 GLPK 在程序终止时清理的最干净的方法

转载 作者:行者123 更新时间:2023-11-30 04:08:31 25 4
gpt4 key购买 nike

我在我的程序中使用 GNU 线性编程工具包。一切正常,但是当我用 valgrind 检查程序时,我发现了一些内存泄漏:

==7051== 160 bytes in 1 blocks are still reachable in loss record 1 of 3
==7051== at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==7051== by 0x52CFACB: glp_init_env (in /usr/lib/libglpk.so.0.30.0)
==7051== by 0x52CFC1C: ??? (in /usr/lib/libglpk.so.0.30.0)
==7051== by 0x52D0211: glp_malloc (in /usr/lib/libglpk.so.0.30.0)
==7051== by 0x52AC50A: glp_create_prob (in /usr/lib/libglpk.so.0.30.0)

根据文档 glp_init_env(void) 在首次使用任何 GLPK API 调用时调用。但是要清理它,需要调用 glp_free_env(void)

我希望我的程序没有内存泄漏,并且简单地手动调用 glp_free_env(); 对我来说不是一个好的解决方案 - 我有一些使用 Boost 单元测试框架编写的单元测试,我希望它们也没有内存泄漏。

理想情况下,我会使用一些可以在程序终止时自动调用它的 C++ 功能。你知道有什么简单干净的方法吗?

最佳答案

如果benjymous's answer由于某种原因不合适,std::atexit可能有帮助:

int atexit( void (*func)() );

Registers the function pointed to by func to be called on normal program termination (via std::exit() or returning from the cpp/language/main function)

关于c++ - 让 GLPK 在程序终止时清理的最干净的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com