int *s; // а это указатель на тип int
Позже я выделяю для них память, чтобы хранить один объект Дата. Суть не в этом.
Показывает ошибку в методе
Чтобы проверить правильность такого освобождения памяти, нужно видеть, как инициализировались dDateIspoln и dDateZakaz.
sk007, сразу бы скинули свой конструктор, было бы яснее чего вы хотите) если так, то пробуйте просто напрямую освобождать delete имя в деструкторе
Может и здесь. Возможно, где-то память портишь, а при освобождении это проявляется. Вот здесь будет выход за границу выделенной памяти при index == iCount (если iCount — размер массива):
Ребята У меня проблема с реализацией деструктора моего класса, который имеет map .
Используя эту карту в качестве образца: 
Моя карта будет выглядеть так:
Мой класс Arestas содержит:
Сейчас мой деструктор выглядит следующим образом:
Но дает мне эту ошибку, когда я иду за списком из ключа [2]:
EDIT Я вставляю на свою карту Arestas* вот так:
c++ memory-management dictionary pointers memory
3 ответа
Похоже, у вас есть проблема с владением вашими структурами. У вас были эти ареты несколько раз в ваших списках, и это неопределенное поведение, чтобы удалить их несколько раз, поэтому вам нужно удалить их только один раз.
Попробуйте что-то вроде этого:
Таким образом, вы создаете набор всех элементов, которые необходимо удалить. И затем вы удаляете их (работает также с уникальными указателями, на самом деле это лучшее решение).
Кажется, что ваши Arestas могут быть уникальными, так что проблема может заключаться в Arestas деструкторе, если vertice является общими и уничтожил там.
Похоже, вы пытаетесь удалить что-то, что никогда не появлялось, или ваша память не была повреждена в другом месте. Не могли бы вы разместить код, в котором вы инициализируете/строите карту?
Кроме того, вы когда-нибудь пробовали использовать C++ диапазон для цикла для таких вещей?
Прежде всего, вы можете только delete объекты, созданные ранее с помощью new оператора.
Если это так, во избежание множественных вызовов для удаления вы можете использовать интеллектуальный указатель, такой как std::shared_ptr .
Вы можете выполнить свой код с помощью Valgrind, чтобы получить более конкретный след этой проблемы.
I’m working on visual studio. My project is: Write a stack and queue test driver. A test driver is a program created to test functions that are to be placed in a library. Its primary purpose is to completely test functions therefore it has no application use. You will use two stacks and two queues in the program, as described below.
a. inS – input stack: used to store all user input
b. inQ – input queue: used to store all user input
c. outS – output stack: used to store data deleted from inQ
d. outQ – output queue: used to store data deleted from inS
And I need to do the following in main: I – insert, D – delete, C – display the number of elements in the two stacks and two queues, T – display the elements at the top of the two stacks, F – display the elements at the front of the two queues, R – display the elements at the end of the two queues
Like this, I’m trying to work on queues and stacks. But the below is shown.