我检查使用valgrind
类指针任何内存泄漏的可能性,并发现了下面的程序没有内存泄漏:decltype(new any_type())可能发生内存泄漏吗?
#include <iostream>
#include <utility>
#include <memory>
using namespace std;
class base{};
int main()
{
unique_ptr<base> b1 = make_unique<base>();
base *b2 = new base();
cout << is_same<decltype(new base()), decltype(b1)>::value << endl;
cout << is_same<decltype(new base()), decltype(b2)>::value << endl;
delete b2;
return 0;
}
这怎么可能呢?
这个特别有趣的结果是像[std :: declval](http://en.cppreference.com/w/cpp/utility/declval)这些专门用于这些表达式的函数, 'decltype(std :: declval()。method())',实际上并没有在任何地方实际定义。 –
cartographer