<分区>
让我们考虑以下引用已销毁对象的示例。
struct Config
{
unsigned int m_maxSize = 1;
};
class FileReader
{
public:
FileReader(Config& config) : m_cfg(config){
}
Config& m_cfg;
};
class FileReaderUser
{
FileReader* m_fileReader;
public:
FileReaderUser(){
Config cfg;
cfg.m_maxSize = 1234;
m_fileReader = new FileReader(cfg);
}
void PrintSize(){
std::cout << "Config value: " << m_fileReader->m_cfg.m_maxSize << std::endl;
}
};
int main()
{
FileReaderUser fileReaderUser;
fileReaderUser.PrintSize();
}
在此示例中输出为 0。我的问题是为什么它为零?如果内存已被其他对象占用(不确定是否为真),或者未触及旧 (1234) 值,我预计会发生访问冲突。它是在调试中的 GCC 7.2.0 上编译的。