昨天我注意到了一件很奇怪的事情。
尝试定位程序崩溃的位置后,我发现它是在Error类中发生的。那是幽默。我将错误信息作为我认为可以绑定的const引用返回。
现在,实现了临时的绑定,我决定将错误信息作为手动动态内存返回;使用ctor和dtor“删除”内存。
奇怪的部分是我仍然崩溃,原因是;我的析构函数被无限期地称为;
{{1}}
从示例中可以看到,我从专门为找到的struct的错误函数中返回了动态分配的错误信息。然后,我有一个Found_ErrorInfo类型的析构函数来删除此动态内存/删除自身。 nexg发生的事情是delete运算符调用相同的析构函数,然后再次调用delete运算符,并且循环继续。
我的问题是,删除运算符的目的是什么?是否通知OS我们不再需要内存?或者只是调用析构函数,然后析构函数通知操作系统取回内存。