【发布时间】:2014-05-19 17:41:01
【问题描述】:
我有一个这样的程序:
int *number0 = new int;
int main()
{
int *number1 = new int;
}
我认为,两种内存分配都会引入内存泄漏,尽管只有 valgrind 抱怨 main 函数中的 number1 。这是为什么呢?
【问题讨论】:
-
这并不重要,因为进程终止时将释放任何内存。我猜想 valgrind 决定全局变量指向的内存不是 memleak。
-
在你得出结论之前可以做类似 number0 的事情,但是,请记住,如果是一个类类型而不是一个
int,它的析构函数将不会被调用(也许 valgrind 在这种情况下会抱怨?) -
@dlf:正是我的问题:我认为,由于没有 valgrind 警告,对象的析构函数(由 *number0 表示)已经以某种方式自动调用,当然不是我现在知道的情况。我也不认为让进程终止处理手动分配的内存是可以的。我不知道为什么,但它让我的脊椎发冷
标签: c++ memory-leaks global-variables valgrind