log4cxx::Level::getError() 是否泄漏内存?
Does log4cxx::Level::getError() leak memory?
我在项目中使用 log4cxx 日志库和 Valgrind 内存分析器(在 Qt Creator 中)检查内存泄漏。
在我看来 log4cxx::Level::getError()
和 log4cxx::Level::getFatal()
泄漏了 18 字节的内存。
这是 Valgrind 转储的相关部分:
18 bytes in 1 blocks are possibly lost in loss record 157 of 409 in OLogger::getLogLevel(char const*) in XXX/Infrastructure/Logging/OLogger.cpp:51
1: operator new(unsigned int) in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
2: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19
3: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19
4: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19
5: log4cxx::Level::getError() in /usr/lib/liblog4cxx.so.10.0.0
6: OLogger::getLogLevel(char const*) in XXX/Infrastructure/Logging/OLogger.cpp:51
现在的问题是库是否故意在视图位置泄漏内存。例如,VLD 过去在静态分配内存方面存在问题。也许日志系统希望尽可能长时间地保持活动状态以报告导致内存泄漏的错误。这只是我的猜测...
谁能证实泄漏?它是有设计的吗?如果可能,我需要做什么才能将其删除?
谢谢:-)
根据 apache.org 上的简短讨论,我当前的版本存在漏洞(请参阅我的问题中的日志)。
泄漏需要进一步调查,例如,在 log4cxx.
的开发分支中
我post这是答案,因为我现在知道泄漏不是我造成的。
我在项目中使用 log4cxx 日志库和 Valgrind 内存分析器(在 Qt Creator 中)检查内存泄漏。
在我看来 log4cxx::Level::getError()
和 log4cxx::Level::getFatal()
泄漏了 18 字节的内存。
这是 Valgrind 转储的相关部分:
18 bytes in 1 blocks are possibly lost in loss record 157 of 409 in OLogger::getLogLevel(char const*) in XXX/Infrastructure/Logging/OLogger.cpp:51
1: operator new(unsigned int) in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so
2: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19
3: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19
4: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.19
5: log4cxx::Level::getError() in /usr/lib/liblog4cxx.so.10.0.0
6: OLogger::getLogLevel(char const*) in XXX/Infrastructure/Logging/OLogger.cpp:51
现在的问题是库是否故意在视图位置泄漏内存。例如,VLD 过去在静态分配内存方面存在问题。也许日志系统希望尽可能长时间地保持活动状态以报告导致内存泄漏的错误。这只是我的猜测...
谁能证实泄漏?它是有设计的吗?如果可能,我需要做什么才能将其删除?
谢谢:-)
根据 apache.org 上的简短讨论,我当前的版本存在漏洞(请参阅我的问题中的日志)。
泄漏需要进一步调查,例如,在 log4cxx.
的开发分支中我post这是答案,因为我现在知道泄漏不是我造成的。