![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Sheff_as_Guest |
|
|||
Unregistered |
Доброе утро/день/ночь.
Такая вот у меня проблема: пишу класс для работы со строками и в нём естественно должно быть сложение строк, вот часть кода:
Но почему-то при компиляции этого кода дебагер рапортирует об утечках памяти. Я проанализировал код, у меня после того как вызывается operator+ создаётся временный объект result, который потом передаётся в operator= и оттуда берётся значение buffer, но только вот сам этот временный объект не удаляется, хотя деструктор в моём классе есть... Конечно, можно самому удалить этот объект в методе operator=, но только вот откуда программа будет знать что ей передаётся: временный объект result или другой объект типа CStr. Помогите кто чем может. |
|||
|
||||
lynx_916 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 13.6.2004 Где: Молдова Репутация: нет Всего: 1 |
по-пойму надо написать деструктор ВЕЗДЕ.
а можноль посмотреть твой класс? но вопросы возникают и так.
чей буфер удаляем? ![]()
опять же: чей буфер?. ведь, насколько я понял, буфер-член класса.
вот. ![]() -------------------- Who dares, wins. (с) Solid Snake |
||||||
|
|||||||
Sheff_as_Guest |
|
|||
Unregistered |
Как чей буффер удаляем, свой, т.е текущего класса, buffer - член класса.
Смотреть на класс не к чему, обычный класс строки, он просто мне нужен для того чтобы MFC не юзать, кстати делал по шаблону CString, не пашет чё то, снова memory leak ![]() |
|||
|
||||
Fantasist |
|
||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Так не пойдет. Ты нигде не вызываешь delete для result, а следовательно у тебя никогда не будет освобождена из под него память. Делай так:
-------------------- Волны гасят ветер... |
||||
|
|||||
Sheff_As_Guest |
|
|||
Unregistered |
Fantasist
Самое интересное что и так не получается, я сам не понимаю почему, ведь вроде всё как надо... |
|||
|
||||
Sheff_as_Guest |
|
|||
Unregistered |
Люди, ну неужели никто не знает что делать, я с этим вот уже целый день сижу, ничего не выходит, вместо того чтобы прогу продолжать писать я этой ерундой занимаюсь, казалось бы так просто, а не получается
![]() |
|||
|
||||
lynx_916 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 13.6.2004 Где: Молдова Репутация: нет Всего: 1 |
всё равно резалт надо удалить. -------------------- Who dares, wins. (с) Solid Snake |
|||
|
||||
Sheff_as_Guest |
|
|||
Unregistered |
Усё, я сделал!
Проблема была вот в чём, у меня в классе не было Copy-конструктора, поэтому и не пахало, щас всё ok. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |