我已阅读 gSOAP 文档并看到有人提到应该调用soap_destroy(soap) 和soap_end(soap) 等,但是它们始终是对服务对象进行一次调用的示例。我使用的服务每次调用都会返回大约 40KB 的文本。我的问题是每个请求的内存使用量线性增长大约相同的大小。我在 getWords 中添加了 soap_destroy(service->soap) 无济于事。谁能指出此代码片段中缺少哪些清理代码?请求程序应该连续运行数天,因此我担心的是每次请求清理而不是关闭时。
我在下面发布了一个基于http://www.webservicex.net/WCF/ServiceDetails.aspx?SID=43的类似示例(没有错误检查) ,(它返回文本块对吗?)。任何帮助是极大的赞赏!
#include "soapBibleWebserviceSoapProxy.h"
#include "BibleWebserviceSoap.nsmap"
#include <iostream>
extern "C" {
#include <unistd.h>
}
struct Service
{
BibleWebserviceSoap service;
std::string getWords(std::string &title, int chapter)
{
_ns1__GetBibleWordsByBookTitleAndChapter req;
_ns1__GetBibleWordsByBookTitleAndChapterResponse resp;
req.BookTitle = &title;
req.chapter = 1;
service.__ns2__GetBibleWordsByBookTitleAndChapter(&req, &resp);
return *(resp.GetBibleWordsByBookTitleAndChapterResult);
}
};
int main(int argc, char* argv[])
{
Service s;
std::string genesis("Genesis");
for (int i=0; i<360; ++i)
{
sleep(2);
std::cout << s.getWords(genesis,1) << std::endl;
}
return 0;
}