小编Flo*_*Flo的帖子

C++正确的结构初始化

我很抱歉问另一个新手问题,但谷歌不能帮助我(或者我可能只是不理解它).

我正在尝试编写一个能够存储一些简单连接数据的类.我的早期概念如下所示:

struct connectionElement{
 string ip;
 SOCKET soc;
};

class ConnectionData{
 private:
  vector<connectionElement> connections;

 public:
  ConnectionData();
  ~ConnectionData();

  void addConnection(string ip, SOCKET soc);
};

void ConnectionData::addConnection(string ip, SOCKET soc) {
 connectionElement newElement;
 newElement.ip = ip;
 newElement.soc = soc;
 connections.push_back(newElement);
 return;
}
Run Code Online (Sandbox Code Playgroud)

现在我已经读过,一旦代码到达范围结束,在不使用new的情况下初始化的对象将被分离.因为我是一个java人,并且不知道shi*关于内存分配,我想知道在addConnection()中初始化新connectionElement的正确方法是什么.

我是否必须使用new来防止数据被删除,或者编译器是否假设以后可能再次访问存储的结构?如果我使用new运算符,我必须在线程终止之前手动删除所有对象,还是自动执行?

c++ memory-management dynamic-memory-allocation

6
推荐指数
1
解决办法
157
查看次数