该程序是否会导致内存泄漏

ikh*_*dor 0 c++ memory-leaks

我问我的朋友,在被这个帖子吸引之后,他是否可以在不使用循环或编码的情况下从1到1000进行打印:

在没有循环或条件的情况下打印1到1000

他用这个程序回答.

#include <iostream>
using namespace std;

static int n = 1;

class f {
public:

    f() {
        cout << n++ << endl;
    }
};

int main(int argc, char *argv[]) {
    f n [1000];
}
Run Code Online (Sandbox Code Playgroud)

运行程序输出正常.但是当我在netbeans上关闭程序时,它似乎仍在运行并消耗内存.该程序是否导致内存泄漏?有人可以解释这个小程序是如何工作的吗?

Luc*_*ore 9

但是当我在netbeans上关闭程序时,它似乎仍在运行并消耗内存

当您关闭程序或它终止时,无论它是否有内存泄漏,内存都将被释放.我很确定你没有正确终止它.

该程序是否导致内存泄漏?

不,如果您不使用newmalloc(直接或间接),您不能有内存泄漏

有人可以解释这个小程序是如何工作的吗?

f n [1000];尝试创建1000个f对象的向量.初始化它们时,将调用构造函数,打印n并递增它.

  • @LuchianGrigore因为标准是这样说的.基本上,它希望保证你可以在析构函数中使用像`std :: cerr`这样的东西.包括静态对象的析构函数. (2认同)