- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
以下代码在调用 boost::property_tree::read_xml() 时因段错误而崩溃。只有在使用 boost::asio::spawn() 生成的 io_service 处理程序内部调用它时才会发生这种情况。如果处理程序刚刚发布,它就可以正常工作。是否有解决方法或解决方法?( boost 1.61)
#include <boost/asio/spawn.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <iostream>
#include <sstream>
#include <thread>
void process()
{
std::cerr << "start"<< std::endl;
std::istringstream is("<t>1</t>");
boost::property_tree::ptree pt;
boost::property_tree::read_xml(is, pt); // <<< seg fault here
std::cerr << std::endl << "end" << std::endl;
}
int main()
{
boost::asio::io_service io_service;
boost::asio::spawn(io_service, [] (boost::asio::yield_context y){
process();
});
io_service.run();
return 0;
}
最佳答案
经过一番挖掘,我们发现 seg 错误是由协程的堆栈溢出引起的,因为在 boost::property_tree::read_xml() 中使用的 rapidxml 解析器默认为每个 xml 文档中的静态内存池在堆栈上分配 64KB。
解决方案是减小池的大小,如下所示:
#define BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE 512
#include <boost/property_tree/xml_parser.hpp>
另一种解决方案是增加协程的堆栈大小。
关于c++ - 使用 boost::asio::spawn 生成的 asio 处理程序中的 boost::property_tree::read_xml 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41030285/
目前,pandas I/O tools不维护 read_xml()方法和对应物to_xml() .但是, read_json 证明可以为数据帧导入和 read_html 实现树状结构对于标记格式。 如
我正在尝试解析此字符串并检索“sid”和“Type”。我有以下代码。它在 get_child 行崩溃,我不完全确定为什么... const boost::property_tree::ptree& e
我正在 try catch boost::property_tree::xml_parser::read_xml 引发的异常。这是我的示例程序: #include #include #inc
我试图将 feedly RSS feeds 导出的 opml 文件解析为 xml 文件。 我使用 listparser、dicttoxml 和 pandas 成功地做到了这一点。我想尝试使用 pand
我正在尝试使用 read_xml 函数将 xml 文件读入 ptree,如下所示: read_xml(myFile, myPtree, boost::property_tree::xml_parser
我想用来自 xml 的数据填充 boost::property_tree::ptree,xml 格式是我传递给 stringstream 的字符串,然后我尝试用 read_xml 读取它,但是当我查看
我正在使用 Boost 1.62.0 并尝试根据 the ISO standard 解析一个 Excel .xlsx 文件包含各种 XML 文件。它读取 [Content_Types].xml 文件就
所以我找到了此处引用的“ pretty-print ”修整空白标志:boost::property_tree XML pretty printing 我找到了 Boost::Property_Tree
我最近开始使用 std::wstring 而不是 std::string 来避免非 ASCII 字符的奇怪结果,但我没有找到方法使用 boost 库读取路径类型为 std::wstring 的 XML
以下代码在调用 boost::property_tree::read_xml() 时因段错误而崩溃。只有在使用 boost::asio::spawn() 生成的 io_service 处理程序内部调用
我是一名优秀的程序员,十分优秀!