saranhya narakedamilli Ответов: 1

Должны ли мы удалить вспомогательную ссылку


Если у меня есть какой-либо код, как показано ниже

void foo(BYTE* a, int c)
{
BYTE *c=a;
//do some operations on c 
}


должен ли я удалить c в конце метода . если я не удалю букву "С", произойдет ли утечка памяти в моей программе ?

Что я уже пробовал:

у меня есть похожие сценарии в моем коде, и он протекает почти 14 мб в час

1 Ответов

Рейтинг:
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

Пожалуйста!