Здравствуйте, Vinick, Вы писали:
V>А можно пальцем ткнуть? Я хоть убей не вижу. Вроде все объекты на которые хранятся указатели, лежат на стеке в main.
Добавь логирование
this, например в класс
Dim:
struct Dim {
Cross * ptr;
explicit Dim(Cross * c) :ptr(c) {
std::cout << "Dim(Cross*) = " << (uint64_t)this << " : " << (uint64_t)ptr << std::endl;
}
Dim(Dim && d) :ptr(d.ptr) {
std::cout << "Dim(&&) = " << (uint64_t)this << " : " << (uint64_t)ptr << std::endl;
}
~Dim() {
std::cout << "~Dim() = " << (uint64_t)this << std::endl;
}
Group group() {
std::cout << "Dim::group = " << (uint64_t)this << std::endl;
Group g(this);
return g;
}
};
Вот
output из ideone.com:
Cross() = 140727019914912
Dim(Cross*) =
140727019914960 : 140727019914912
Op(D&&) = 140727019914976 : 140727019914912
Op(&&) = 140727019914928 : 140727019914912
Cons(Op&&) = 140727019914928 : 140727019914912
~Dim() =
140727019914960
cons1 10
Dim::group =
140727019914960
Group(Dim*) =
140727019914960 :
140727019914960
Op(D&&) = 140727019914976 :
140727019914960
Op(&&) = 140727019914944 :
140727019914960
Cons(Op&&) = 140727019914944 :
140727019914960
-1878505776