Нужна помощь в устранении неполадок источника утечки памяти - C ++ - PullRequest
0 голосов
/ 11 октября 2019

Я получаю какую-то утечку памяти с этим кодом. Хотя фактически не выдает никакой ошибки, при запуске через Memcheck он обнаруживает утечку памяти.

Должен ли я также удалить [] временный массив или что-то еще?

Вот эта функцияпроисходит в:

1 Ответ

1 голос
/ 11 октября 2019

Каждое выделение памяти должно быть сопряжено ровно с одним освобождением. Когда эта функция заканчивается, память, на которую указывает newBinaryNum, не была освобождена, и адрес этой памяти нигде не сохраняется. Следовательно, утечка памяти.

Поскольку вы не используете никаких преимуществ динамического выделения для этого BinaryNum объекта, не используйте динамическое выделение. Просто объявите вашу переменную как BinaryNum newBinaryNum;. Компилятор не только будет обрабатывать потребности этого объекта в памяти, но и ваш код сможет извлечь выгоду из оптимизации возвращаемого значения .

(Кроме того, вам следует опираться на стандартную библиотекунемного больше. Ваши манипуляции с binaryAry имитируют функциональность std::vector. Зачем заново изобретать колесо? В этой функции вы должны сосредоточиться на классе BinaryNum, поэтому делегируйте детали управления памятьюв стандартную библиотеку.)

...