c – 可以在堆腐败的情况下新的投掷?
在堆腐的情况下,可以新的投掷吗?
如果我正确理解,在堆腐败的情况下,所有赌注都会关闭,任何事情都可能发生.它是否正确? 解决方法
(从Als的建议中的评论移动到答案,并延伸到更好或更差:-))
损坏的堆将使您对程序的任何行为期望无效.至关重要的是,抛出异常意味着一些可靠的程序化处理是可行的,但是没有实现检测堆损坏可能会知道这是否是真的,因此它们更有可能被断言或类似. 如果我们考虑堆可能有什么类型的损坏: >与堆的当前状态相关的损坏的记录. >分配和/或免费列表.腐败可能意味着以后的堆分配取消引用无效指针,堆的某些部分泄漏批发,在新的/新的[] / delete / delete [] / malloc / realloc / free循环无限循环中调用的更晚的堆分配或释放算法等等.. >申请资料 >应用程序本身通过new和new []创建的对象可能会被损坏,破坏程序状态,包含的指针和句柄等.问题可能会以任何方式显示出来. 更一般地说,关于堆,在最好的情况下,您可以希望新的将在堆耗尽时抛出,但即使远远没有保证 – 特别是在只有虚拟内存被新分配的操作系统上,如果后续页面错误不能满足他们表现为SIGSEGV或类似的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |