栈上数据通常能够自动释放。还有就是进程结束后系统会回收该进程的所有内存,但该进程的句柄表(系统内核数据)可能依然存活。
另一点是进程启动时,被系统加载到内存中,在进程内的逻辑地址映射到物理地址,但是这个映射是由操作系统来维护的。而且操作系统会在特定时间里整理内存以腾出更大的连续空间。因此同一个逻辑地址,但物理地址可能是不稳定的。这也是windows提供稳定的handle的原因之一。因此你会发现有些API函数的名称叫做lock内存,这表示你正处在修改这块内存数据的过程中,不希望操作系统移动这块内存数据。
在NT架构里,系统为进程做了隔离,但是通常系统会要求你仅使用一半逻辑内存,另一半留给操作系统。