生命周期检查
为了帮助开发者发现一些简单的错误,当节点状态结构和容器被销毁时,fbl::
容器会运行多项检查。它们使用 ZX_DEBUG_ASSERT
实现,因此仅在启用调试断言时存在。
首先,如果节点状态结构位于容器内,则销毁该结构是非法的。这样做会被视为错误,并会触发断言。请始终确保不允许对象仍然位于容器中。使用代管式指针跟踪对象生命周期时,这通常很容易实现,因为容器中的对象需要获得对容器的至少一个对象引用的所有权,因此对象在离开容器并且可以最终引用之前无法销毁。
其次,当包含非受管指针的容器中仍存在对象时,销毁该容器是违法的。托管指针容器会在销毁时自动对其持有的托管引用执行 clear()
,但非托管指针容器不会执行相同的操作。如果在销毁时容器中仍存在非托管指针,则这可能是一个错误,并且内存可能已泄露。因此,允许销毁包含非受管指针的非空容器将触发断言。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-03-15。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-03-15。"],[],[]]