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数据结构。在解析问题上,构造函数引发异常。
很想知道,如果parse在文件中间失败并引发异常并且mapConfig有数据会发生什么 解析到现在为止,mapConfig使用的内存是否会在这种情况下自动放弃?
答案 0 :(得分:1)
如果解析失败[...]并引发异常[...],那么mapConfig使用的内存会在这种情况下自动放弃吗?
是;如果从构造函数体中抛出异常,则将自动销毁所有成员和基类子对象。如果使用new
创建对象,则分配的内存也将自动释放。
顺便说一句,抛出string
有点不寻常;扔掉std::exception
派生的东西更为常见。此外,异常说明符通常被认为是一个坏主意,并且已在最新版本的语言中弃用。