删除后使用“this”的陷阱
C FAQ 警告不要在调用“delete this”后访问“this”指针,”引用了四项限制,包括禁止检查、比较、打印或铸造它。但为什么这条看似无害的数据如此危险?
问题的症结在于删除“this”后随之而来的未定义行为。删除“this”实际上会释放当前对象,从而使“this”指针无效。涉及此指针的任何后续操作都将变得不可预测。
虽然可能很想将“this”转换为整数或使用 printf() 输出其值,但 C 标准不提供这些操作的行为保证。编译器可以自由地以任意方式解释这些操作,例如访问未初始化的内存甚至损坏硬盘驱动器。
要规避此问题,请考虑在删除之前将“this”指针复制为整数它。这允许您保留指针的值以供将来使用,而无需调用未定义的行为。
以上是为什么在 C 中删除'this”后使用它如此危险?的详细内容。更多信息请关注PHP中文网其他相关文章!