为了这个问题,我将把内存想象成一个简单的字节数组,我将谈论堆内存,因为它可以动态分配。
假设我正在实例化某个类,并在已经分配了一些内存的堆上创建一个对象。然后,在创建对象之后,我分配了更多内存(可能通过实例化另一个类)。当然,这意味着使用new
anddelete
关键字。
内存现在看起来像这样:
... byte byte my_object ... my_object byte byte ...
执行时究竟会发生什么delete my_object;
?所有其他内存都向左移动了sizeof(MyClass)
吗?如果是这样,由谁?操作系统?那么当没有操作系统提供虚拟内存时会发生什么?