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

C++ 如果我直接停止调试,内存会释放吗?,c++,c,debugging,memory-leaks,ide,C++,C,Debugging,Memory Leaks,Ide,我想知道,假设我正在调试一个代码,并且在任何时候我都分配了一些内存和断点命中,例如: 1: Statement to allocate 1 MB memory in **C**. 2: Any other statement where **BREAKPOINT HIT**. 现在我的问题是: 如果我将使用任务管理器直接杀死我的IDE(如VisualStudio),那么分配的内存和资源将被释放或不释放 如果我将停止调试,那么分配的内存和资源将释放或不释放 如果是,那么我如何确认内存和资源是

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

1: Statement to allocate 1 MB memory in **C**.
2: Any other statement where **BREAKPOINT HIT**.  
现在我的问题是:

  • 如果我将使用任务管理器直接杀死我的IDE(如VisualStudio),那么分配的内存和资源将被释放或不释放
  • 如果我将停止调试,那么分配的内存和资源将释放或不释放

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

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

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


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

    什么操作系统?基于NT的操作系统是的,其他windows版本。。。否/是(取决于资源类型)基于NT的操作系统windows xp。若这是内存泄漏发生的原因。@BharatSharma否,内存泄漏发生在程序运行时。正如我所说,当你的程序终止时,系统会回收所有内存。为什么如果你打开任何相机或共享资源,那么当应用程序崩溃时,它会显示正在使用的设备。@BharatSharma是的,在一些设计糟糕的操作系统上,如果程序获取了其他资源而没有明确释放它们,系统可能会失去对它们的跟踪。。。但通常情况并非如此。@JimBalter:在基于NT的Windows版本中,当附加的调试器死亡时,进程也会死亡。Windows无法继续运行它们,因为两者的状态相互交织。