Element* prevEl;
                  
                  
                      T infoVal;
                  
                  
                  
                  
                  
                  public:
                  
                  
                    Element(T data) {
                  
                  
                      nextEl = prevEl = NULL;
                  
                  
                      infoVal = data;
                  
                  
                    }
                  
                  
                   ~Element() {
                  
                  
                      delete &infoVal;
                  
                  
                    }
                  
                  
                  }Вот запускаю код
                  
                  
                  Album * al = new Album();
                  
                  
                  Element<Album> * el = new Element<Album>(*al);
                  
                  
                  delete el;В деструкторе класса Album прописан вывод текста. При запуске кода информация выводится три раза. Первый раз, видимо, когда удаляется параметр data, второй раз потому, что я сам вызываю его через delete. А откуда берется третий раз?
                  
                  
                
Так делать нельзя, delete может быть использован только к памяти, выделенной через new Когда вы передаете al в конструктор, он копируется, при этом для самого объекта al никогда не зовется delete и он благополучно утекает
Обсуждают сегодня