В настоящее время я реализую веб-сервис с использованием gsoap версии 2.8 и сталкиваюсь с ошибками сегментации.
Поэтому я выделяю память с помощью soap_malloc следующим образом:
OSoap *myObject = (OSoap *)soap_new_OSoap(this);
myObject->myString = (std::string*)soap_malloc(this, sizeof(std::string));
Исходный код OSoap создается с помощью wsdl и выглядит следующим образом:
class SOAP_CMAC OSoap {
...
public:
std::string *myString; // optional attribute
...
}
Теперь у меня есть выделенная строка, но как мне записать содержимое в эту строку?
myObject->myString->insert(0, "123");
а также
*(myObject->myString) += "abc";
привести к ошибкам сегментации.
std::string *abc = new std::string("abc");
myObject->myString = abc;
работает, но вызывает утечку памяти, которую я стараюсь избегать.
Поиск в google или stackoverflow того, как скопировать строку в С++, не дал мне подсказки, как решить проблему с помощью указателей std::string