C++静态数组导致内存泄漏?

MDo*_*vin 5 c++ memory arrays memory-leaks

可以说我有类似......

void foo()
{
    char c[100];
    printf("this function does nothing useful");
}
Run Code Online (Sandbox Code Playgroud)

当调用foo时,它会在堆栈上创建数组,当它超出范围时,内存是否会自动释放?或者是c被破坏了,但是内存仍然被分配,除了重新启动计算机之外无法访问它/取回它?

ken*_*ytm 6

是自动解除分配的内存?

是.如果你想知道的话,也会调用析构函数.这就是他们在automatic存储类中的原因.

(实际上对于大多数架构,程序只会调用100个析构函数(如果有的话),然后将堆栈指针向后移动100*sizeof(T)个字节作为"释放".)