क्या यह गारंटी है कि shared_ptr उसी समय पते पर रीसेट हो जाने पर समाप्त हो जाएगा?क्या यह गारंटी है कि shared_ptr उसी समय पते पर रीसेट हो जाने पर समाप्त हो जाएगा?
#include <cassert>
#include <memory>
int main()
{
int* i = new int(0);
std::shared_ptr<int> si(i);
std::weak_ptr<int> wi = si;
si.reset(i);
assert(wi.expired()); // wi.expired() == true (GCC 4.7)
}
या जब wi.expired()
का मूल्य निर्धारित नहीं है यह मामला है?
संपादित करें:
मैं अब सवाल थोड़ा संशोधित:
यह गारंटी है कि weak_ptr
समाप्त हो जाएगा जब shared_ptr
एक ही पते, जो एक shared_ptr
निहित जब यह weak_ptr
प्रारंभ किया गया था पर रीसेट हो जाता है?
#include <cassert>
#include <memory>
int main()
{
int* i = new int(0);
std::shared_ptr<int> si(i);
std::weak_ptr<int> wi = si;
si.reset();
int* j = new int(0);
// Suppose that new returns the same address that contains variable i :
assert(j == i);
si.reset(j);
assert(wi.expired()); // wi.expired() == true (GCC 4.7)
}
संबंधित प्रश्न: [यदि मैं std :: shared_ptr को अपने आप रीसेट करता हूं तो क्या होता है] (http: // stackoverflow।com/प्रश्न/9785656/क्या-क्या होता है-अगर-ए-रीसेट एक stdshared-ptr करने वाली ही)। – ComicSansMS