至少从 2021-01-10T15:19:40Z 开始,我无法访问www.mingw.org。
据我所知,这是 mingw 的官方网页。
有人知道www.mingw.org的状态吗?或者,任何其他套房的地方可以问这个问题?
我正在使用带有libstdc ++的GCC 7.3.0.
这是std::vector
ctor的实施.
vector(initializer_list<value_type> __l,
const allocator_type& __a = allocator_type())
: _Base(__a)
{
_M_range_initialize(__l.begin(), __l.end(),
random_access_iterator_tag());
}
// Called by the second initialize_dispatch above
template<typename _ForwardIterator>
void
_M_range_initialize(_ForwardIterator __first,
_ForwardIterator __last, std::forward_iterator_tag)
{
const size_type __n = std::distance(__first, __last);
this->_M_impl._M_start = this->_M_allocate(__n);
this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
this->_M_impl._M_finish =
std::__uninitialized_copy_a(__first, __last,
this->_M_impl._M_start,
_M_get_Tp_allocator());
}
Run Code Online (Sandbox Code Playgroud)
在函数中_M_range_initialize(_ForwardIterator,_ForwardIterator,std::forward_iterator_tag)
,当我std::__uninitialized_copy_a
抛出异常时,this->_M_impl._M_start
在这个函数中分配的异常将不会被释放.
这意味着此实现将导致内存泄漏.
但是,libstdc ++是经过充分测试的知名库.我的理解一定是不正确的.
为什么这个实现中没有内存泄漏?