如果在使用新程序和结束程序分配数据后没有调用delete运算符会发生什么?

She*_*rif 5 c++ memory operating-system memory-management internals

如果在使用new分配数据后没有调用delete运算符会发生什么.我知道已经分配的数据在发布之前不可用,但在结束程​​序之后?

为什么PC似乎有恶心的xD,我的意思是它非常慢,但过了一段时间它的性能变得更好但不像程序执行之前?

注意:我正在运行Windows XP.

cni*_*tar 5

当程序结束它所请求的所有内存(堆栈,堆积任何内容)时,操作系统声明.

  • @mavric我想这取决于进程使用的资源.例如,如果进程使用大量内存,则可能会迫使操作系统更换大量内容.换回需要时间.**这只是猜测** (2认同)

Kar*_*tan 2

我认为您正在看到将有用的程序从主内存逐出到磁盘的效果。

您的故意泄漏程序正在尝试分配系统上的所有内存。为了满足您的程序的需求,Windows 会查找系统上的其他程序,将其内存写入页面文件,并将其内存重新分配给您的程序。当您看到页面文件使用量跃升至最大值时,这是因为大多数其他程序已被推到那里而不是主内存。

当您的程序退出时,Windows 会回收该程序的所有内存(如其他人所述)。但是计算机上的所有其他程序的内存仍然保存在磁盘上的页面文件中,而不是主内存中。因此,当它们运行时,Windows必须从磁盘加载它们的内存页面,使得程序显得很慢。一段时间后,程序将移回主内存,性能看起来会正常。