Я прочитал документы gSOAP и увидел упоминания о том, что нужно вызывать soap_destroy (soap) и soap_end (soap) и т. Д., Однако они всегда являются примерами с одним вызовом для объекта службы.Служба, которую я использую, возвращает около 40 КБ текста при каждом вызове.Моя проблема заключается в том, что использование памяти растет линейно примерно на один и тот же размер для каждого запроса.Я добавил soap_destroy (service-> soap) в getWords безрезультатно.Кто-нибудь может указать, какой код очистки отсутствует в этом фрагменте кода?Запрашивающая программа должна работать целыми днями, поэтому я беспокоюсь не о завершении очистки каждого запроса, а о чистоте каждого запроса.
Ниже я опубликовал анагативный пример (проверка без ошибок), основанный на 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;
}