我当前的程序有问题。由于某种原因,它总是在 Windows 上的最后一行代码之后崩溃。我收到“应用程序不再响应”错误或类似的错误。 所以我尝试了英特尔检查员。幸运的是,它告诉我项目中的一些严重错误,我访问了一些未初始化的内存。
除了我理解的这些明显问题之外,我还遇到了一些问题:
- 不正确的 memcpy 调用:
boost::algorithm::trim()
- 未初始化的部分内存访问:
myptree.get<boost::posix_time::ptime>("path.to.node")
其中myptree
类型为boost::property_tree::ptree
- 未初始化的内存访问:
cout << myptime
其中myptime
类型为boost::posix_time::ptime
...
这是否意味着我没有正确使用 boost 库函数?或者这是误报?
我只是感到困惑,因为这些功能可以正常工作,它们按照我的要求进行操作,而且我没有收到任何错误消息。
最后我还收到了内存未释放警告(来自 [Unknown] 来源)。
修剪示例:
#include <iostream>
#include <boost/algorithm/string.hpp>
int main() {
std::string test = " test ";
boost::algorithm::trim(test);
std::cout << test << std::endl;
return 0;
}
给我一个不正确的 memcpy 调用...
最佳答案
Boost 会愉快地转发错误的论点;它通常无法检查它们。如果 boost::algorithm::trim 向 memcpy 传递了错误的参数,那是因为您向 trim 传递了错误的参数。
所以,是的,你应该担心。您的程序中几乎肯定存在多个错误。检查您对所报告函数的调用。
关于c++ Intel inspector 显示许多 boost 错误 - 我需要担心吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47576884/