1

我当前的程序有问题。由于某种原因,它总是在 Windows 上的最后一行代码之后崩溃。我收到“应用程序不再响应”错误或类似情况。所以我尝试了英特尔检查员。幸运的是,它在我的项目中告诉了我一些错误,我访问了一些未初始化的内存。

除了我理解的这个明显的问题之外,我还得到了一些:

  • 不正确的 memcpy 调用:boost::algorithm::trim()
  • 未初始化的部分内存访问:myptree.get<boost::posix_time::ptime>("path.to.node")where myptreeis of typeboost::property_tree::ptree
  • 未初始化的内存访问 in: cout << myptimewhere myptimeis of typeboost::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 调用...

4

1 回答 1

1

Boost 会很高兴地转发不好的论点;它通常无法检查它们。如果 boost::algorithm::trim 将错误的参数传递给 memcpy,那将是因为您将错误的参数传递给了 trim。

所以,是的,你应该担心。几乎可以肯定你的程序中有多个错误。检查您对报告的函数的调用。

于 2017-11-30T16:09:00.890 回答