, ben üye değişkeni std::vector<node*> children
İşaretçiyi bir işaretçi vektörüne itmek için bir bellek sızıntısı mı? Benim sınıfımda
Aşağıdaki sınıf üyesi işlevi bellek sızıntısı oluşturuyor mu var?
//adds a child node
{
node* child = new node("blah","blah","blah");
child->Set_Parent(this);
children.push_back(child); //<- Is this ok?
}
vektör pointer bir kopyasını oluşturur ve aynı bellek, iki işaretçiler ve daha sonra orijinal işaretçi doğru, kapsam dışına gider?
Bu basit ve açık olabilir, ancak yalnızca varsayımımı onaylamak isterim.
teşekkürler
['std :: shared_ptr'] (http://en.cppreference.com/w/cpp/memory/shared_ptr) gibi akıllı işaretçilere bakmanızı öneririm. –
@JoachimPileborg: Bu durumda, std :: vector, semantikleri taşıdığı için, ['std :: unique_ptr'] (http://en.cppreference.com/w/cpp/memory/unique_ptr) seçeneğini de kullanabilirsiniz. – bitmask
Düğümlerin her zaman ebeveynleri olması gerekiyorsa, bunu yapıcının bir parçası haline getirebilirsiniz. O halde tek (,), bu "blah" Yeni düğümü ("blah", "blah") 'children.push_back gerekir,' – dtech