用C++来说,如果取消引用一个指向已经释放的内存的指针,我将得到一个错误的访问消息并返回到操作系统。有人能够详细解释发生了什么吗?这是一个OS /编译器的面试问题。当C++程序出现运行时错误时发生了什么?
0
A
回答
0
一旦你delete
但是,C++把它标记为免费的,并且可以把它交给任何需要它的人。
因为删除指向它的内存块does not zero the value of all pointers
。删除内存仅仅会记下内存可用于其他用途。在这种情况发生之前,你不能指望它,在某些编译器/运行时/体系结构组合中,它甚至可能会崩溃。
+0
崩溃是UB的最佳可能结果。它甚至可能工作,只有在向客户展示软件时崩溃 – 2015-01-21 04:40:50
+0
@Bryan Chen:是的。大多数时候它崩溃了,但有一段时间它也可能不会崩溃,以防止悬挂指针。 – 2015-01-21 05:00:52
相关问题
- 1. 当发生javascript运行时错误时会发生什么?
- 2. 当程序运行时发生事件时会发生什么
- 3. 为什么发生运行时错误?
- 4. 运行程序时为什么会出现错误?
- 5. 为什么在运行应用程序时出现此错误?
- 6. Ruby:调用函数时出现TypeError错误。发生了什么?
- 7. 运行'.scala'程序时,Scala运行时/ REPL背后发生了什么?
- 8. 当我运行我的程序时,为什么会出现“分段错误”?
- 9. 在C#中运行AD命令行程序时发生错误#
- 10. 当我运行'bower install'时,为什么会出现此错误?
- 11. 当我正好运行MemoryBarrier()时发生了什么?怎么样?
- 12. 当这些代码行运行时发生了什么+ iPhone
- 13. 当FlatFileFooterCallback出错时会发生什么?
- 14. 当你运行一个程序时会发生什么?
- 15. 当我运行我的程序时,为什么会出现NullPointerException?
- 16. 仅当从其他程序运行时出现Unicode错误?
- 17. 当运行jar时发现元素'beans'错误发生
- 18. 运行时发生错误
- 19. 从c#运行gpg.exe时出现错误#
- 20. 运行时出现C应用程序错误
- 21. C列表插入程序 - 运行时出现分段错误
- 22. 运行时出现错误
- 23. 当我运行Index.jsp时,出现了很多错误
- 24. 为什么在使用printf时会出现运行时错误?
- 25. 当我运行我的C程序时,为什么没有发生?
- 26. 为什么当我运行我的程序时什么都没有发生
- 27. 为什么在这个C程序中发生了段错误?
- 28. 当运行react-scripts测试时出现“错误:产生git ENOENT”
- 29. 为什么这个C程序遇到运行时错误?
- 30. Android在启动应用程序时出现运行时错误
我相信操作系统具有您可以访问/使用的内存段的知识,当您释放某些内容时,将其从列表中移除。所以试图访问这些内存导致OS不允许你使用它(I.E。分段错误)。这是一项安全功能,也有助于防止程序中的静音故障 – 2015-01-21 04:21:12