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

Bha*_*rma 5 c c++ ide debugging memory-leaks

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

1: Statement to allocate 1 MB memory in **C**.
2: Any other statement where **BREAKPOINT HIT**.  
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:

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

如果是,那么如何确认内存和资源是否已释放.

Jim*_*ter 4

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

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

至于确定系统实际上释放了内存,这可能相当困难,因为系统将内存分配给缓冲区和交换区域,并且不一定有您可以检查的可用空间计数。对于其他资源......如果您无法获取它们,那么它们就不会被释放。

  • @BharatSharma 不,程序运行时*会发生内存泄漏。就像我说的,当你的程序终止时,所有内存都会被系统回收。 (2认同)