Рейтинг:
5
OriginalGriff
Цитата:
должен ли я удалить c в конце метода
Нет.
Функция, которую вы показываете, не выделяет никакой памяти, кроме указателя
c
сам по себе, который выделяется в стеке и который будет восстановлен автоматически, когда функция в результате завершится.
Вы не должны удалять значение, на которое указывает c, так как оно было передано функции в качестве параметра и может использоваться вне функции.
Вы должны удалить значения, которые вы создаете с помощью
new
только, и даже тогда удалить их, когда вы закончите с ними.
Ищите утечку памяти в другом месте!
saranhya narakedamilli
Если у меня есть две переменные в одной области
например, следующим образом:
Байт *c;
Байт* а;
пустота фу()
{
//a получил выделенную память в конструкторе
c=a;
// выполните некоторые операции над c
}
Должны ли мы удалить c здесь ?
OriginalGriff
Нет.
Там нет конструктора и нет выделения памяти, кроме как для экземпляра класса. Копирование указателя-это не новое выделение памяти!
Указатель на память-это не то же самое, что память, на которую он указывает: это "ссылка на" отношения точно так же, как "эта машина", "эта машина", "ваша машина" и "моя машина" являются ссылками на реальные транспортные средства, но не являются самим транспортным средством. Подумайте об этом: если я продаю вам "мой автомобиль", то "ваш автомобиль" относится к транспортному средству, но я должен удалить ссылку на него из переменной ***, не отправляя автомобиль в дробилку***
Если я удалю myCar, когда продам его вам, то я удалю автомобиль с планеты, так что указатель yourCar станет недействительным (и вы захотите вернуть свои деньги)
Shubham_Dubey
@OriginalGriff Извините, что пишу здесь, я не мог найти другого способа отправить вам сообщение.
Пожалуйста, ответьте на вопрос по ссылке :
http://www.codeproject.com/Questions/1151806/Logic-of-the-implementation-of-the-non-native-data
saranhya narakedamilli
Большое спасибо :)
OriginalGriff
Пожалуйста!