我目前正在使用 gsoap 2.8 版实现 Web 服务并遇到分段错误。
因此,我像这样使用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 中搜索如何在 c++ 中复制字符串并没有提示我如何使用 std::string 指针解决问题