2
typedef struct {
    guint8  mode;     
    vector <string> match_src;  
} structConfig_t;


map < guint64, vector <structConfig_t> > mapConfig_t;

然后上课如下

class Config {
  private :
     mapConfig_t mapConfig;

  public :
     Config(const char * config_fn) throw (string);
}

构造函数解析 "config_fn" 提供的文件中的每一行,并构建 mapConfig 数据结构。在解析问题上,构造函数引发异常。

好奇地知道,如果在文件中间解析失败并引发异常,并且 mapConfig 到目前为止已经解析了数据,会发生什么情况,在这种情况下,mapConfig 使用的内存会自动放弃吗?

4

1 回答 1

1

如果解析失败 [...] 并引发异常 [...],mapConfig 使用的内存会在这种情况下自动放弃吗?

是的; 如果构造函数体抛出异常,则所有成员和基类子对象将自动销毁。如果对象是使用 创建的new,那么分配的内存也将被自动释放。

顺便说一句,扔有点不寻常string;抛出从std::exception. 此外,异常说明符通常被认为是一个坏主意,并且在该语言的最新版本中已被弃用。

于 2012-07-04T16:44:02.267 回答