Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > operator+, operator= |
Автор: Sheff_as_Guest 30.7.2004, 18:48 | ||
Доброе утро/день/ночь. Такая вот у меня проблема: пишу класс для работы со строками и в нём естественно должно быть сложение строк, вот часть кода:
Но почему-то при компиляции этого кода дебагер рапортирует об утечках памяти. Я проанализировал код, у меня после того как вызывается operator+ создаётся временный объект result, который потом передаётся в operator= и оттуда берётся значение buffer, но только вот сам этот временный объект не удаляется, хотя деструктор в моём классе есть... Конечно, можно самому удалить этот объект в методе operator=, но только вот откуда программа будет знать что ей передаётся: временный объект result или другой объект типа CStr. Помогите кто чем может. |
Автор: lynx_916 30.7.2004, 22:24 | ||||||
по-пойму надо написать деструктор ВЕЗДЕ. а можноль посмотреть твой класс? но вопросы возникают и так.
чей буфер удаляем? ![]()
опять же: чей буфер?. ведь, насколько я понял, буфер-член класса.
вот. ![]() |
Автор: Sheff_as_Guest 30.7.2004, 23:11 |
Как чей буффер удаляем, свой, т.е текущего класса, buffer - член класса. Смотреть на класс не к чему, обычный класс строки, он просто мне нужен для того чтобы MFC не юзать, кстати делал по шаблону CString, не пашет чё то, снова memory leak ![]() |
Автор: Fantasist 30.7.2004, 23:33 | ||||
Так не пойдет. Ты нигде не вызываешь delete для result, а следовательно у тебя никогда не будет освобождена из под него память. Делай так:
|
Автор: Sheff_As_Guest 30.7.2004, 23:57 |
Fantasist Самое интересное что и так не получается, я сам не понимаю почему, ведь вроде всё как надо... |
Автор: Sheff_as_Guest 31.7.2004, 09:54 |
Люди, ну неужели никто не знает что делать, я с этим вот уже целый день сижу, ничего не выходит, вместо того чтобы прогу продолжать писать я этой ерундой занимаюсь, казалось бы так просто, а не получается ![]() |
Автор: lynx_916 31.7.2004, 16:21 | ||
всё равно резалт надо удалить. |
Автор: Sheff_as_Guest 31.7.2004, 21:32 |
Усё, я сделал! Проблема была вот в чём, у меня в классе не было Copy-конструктора, поэтому и не пахало, щас всё ok. |