Poco FIFOBuffer read() 错误

Poco FIFOBuffer read() error

我无法使 Poco::FIFOBuffer.read() 工作。获取访问冲突错误或变量结果周围的堆栈已损坏。

    std::string output;

    Poco::FIFOBuffer recvData(BUFFERLEN);

    int iResult = mySockets[vect[2]]->receiveBytes(recvData);
    char* result = "";

    std::cout << recvData.read(result, recvData.size());
    output = result;

在程序的其他地方,一个非常相似的东西似乎工作正常(vect 是一个向量)mySockets 是一个 Map

Poco::FIFOBuffer sendData(BUFFERLEN, false);
sendData.copy(vect[3].c_str(), vect[3].size());
int iResult = mySockets[vect[2]]->sendBytes(sendData);
output = "data sent, sendBytes returned: " + std::to_string(iResult);

参考:http://pocoproject.org/docs-1.5.0/Poco.BasicFIFOBuffer.html#11400

如上面评论所述,文档是 wrong

如果您希望缓冲区自动调整大小,请使用Poco::Buffer<char>;或者,确保 char* 指向足够的 space 来容纳数据(这很棘手 - 你必须查询 FIFOBuffer 以找出 receiveBytes() 调用了多少 return,所以使用 Poco::Buffer 是一个更简单的选择)。