比方说,在C ++中,如果解引用指向已经释放的内存的指针,我将收到错误的访问消息并返回操作系统。有人能解释一下那里发生了什么吗?这是关于OS /编译器的访谈问题。
答案 0 :(得分:0)
一旦你 delete
那个内存,C ++就会将其标记为免费,并且可以将其发送给任何要求它的人。
因为删除指向它的内存块 does not zero the value of all pointers
。删除内存只是说明内存可用于某些其他目的。在此之前, memory may appear to be intact
- 但你不能指望它,在一些编译器/运行时/架构组合上,你的 program will behave differently
- 它甚至可能会崩溃。