【发布时间】:2014-04-26 11:10:47
【问题描述】:
我尝试将 char* 数据从一个结构复制到另一个结构时遇到问题。这是结构
struct connection_details
{
char *server;
char *user;
char *password;
char *database;
};
基本上我想要做的是将数据从一个对象复制到另一个对象(connection_setup 是一个私有的 connection_details 对象)这是另一个对象的构造函数的代码:
settings *tmp = new settings();
this->connection_setup.server = strdup(tmp->getSQLSettings().server);
delete tmp;
我不断遇到分段错误,这是可以理解的,因为我可能触摸了我不应该做的事情。
基本上设置对象和我所在的对象都包含一个connection_details类型的私有成员变量。即
class settings {
public:
settings();
~settings();
connection_details getSQLSettings();
private:
connection_details sqldetails;
};
感谢您的建议!
【问题讨论】:
-
你为什么不使用
std::string?会使整个问题(以及更多问题)基本上消失。 -
新的和免费的?!另外,你能分享一下sql设置的设置构造函数和getter吗?我的意思是实现。
-
我敢打赌,如果您将
connection_details getSQLSettings()更改为connection_details& getSQLSettings(),那么它会正常工作。或者,您可以将 proper 复制构造函数添加到struct connection_details. -
啊,对不起。我的意思是删除它。我看到了。
-
对
connection_details的 4 个数据成员中的每一个使用std::strings 会产生一些开销,因为有四倍分配和取消分配。如果这对性能至关重要,您应该只进行一次分配(因此不要使用std::string)。如果您不关心效率,std::string很棒。
标签: c++ string char copy segmentation-fault