Gha*_*nPL 12 c c++ memory operating-system
比方说,举个例子:
int main()
{
  char* test = new char[50000];
  return 0;
}
程序完成后分配的内存会发生什么变化?是否立即获得其他应用程序的释放?或者也许过了一段时间?或许它永远丢失在系统中?或者它是否被交换到磁盘永远不会返回到RAM?或者也许完全不同的东西?
我想知道主要3操作系统会发生什么:Windows(XP及以上,如果有任何差异),Linux,Mac OS X.
在任何带有MMU(包括Unix,Linux,OSX和Windows NT系列)的O/S上,该进程都有一个数据结构,用于为MMU设置页面映射.当进程终止时,将释放此映射,并将页面添加到操作系统的空闲池中.
在非受保护的内存O/S平台(如DOS或某些实时操作系统)上,可能需要显式释放内存,如果未正确整理,则O/S池可能会泄漏内存.