我檢查使用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