如果我直接停止调试会释放内存吗?

时间:2014-01-03 11:05:08

标签: c++ c debugging memory-leaks ide

我想知道,假设我正在调试代码,并且在任何时候我分配了一些内存和断点命中,例如:

1: Statement to allocate 1 MB memory in **C**.
2: Any other statement where **BREAKPOINT HIT**.  

现在我的问题是:

  1. 如果我直接使用任务管理器杀死我的IDE(如visual studio),那么分配的内存和资源将是免费的。
  2. 如果我将停止调试,那么分配的内存和资源将是免费的。
  3. 如果是,那么如何确认内存和资源是否已释放。

1 个答案:

答案 0 :(得分:4)

在现代操作系统上,当程序终止时,程序的所有内存都将返回到系统,这将在任何一种情况下发生。这可能不会在某些嵌入式系统上发生,但您不会在这些系统上运行IDE。

对于除内存之外的其他资源,例如打开文件,设备等,操作系统通常会回收所有资源(除非它们仍被其他进程使用),但对于某些系统和某些资源,在某些条件下,资源可能会丢失或被锁定(应该被视为操作系统或设备驱动程序中的错误)。

就确定系统实际释放内存而言,这可能非常困难,因为系统会将内存分配给缓冲区和交换区域,并且不一定要计算可用空间。对于其他资源......如果你无法获得它们,那么它们就不会被释放。