Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free / 14 сообщений из 14, страница 1 из 1
13.04.2020, 09:24
    #39946500
PrimaryPro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
Добрый день.

Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free:

Код: plaintext
1.
2.
3.
4.
        TADOQuery *ADOQuery2=new TADOQuery(NULL);
        //---- Код
        ADOQuery2->Close();
        ADOQuery2->Free(); // delete ADOQuery2?
...
Рейтинг: 0 / 0
13.04.2020, 10:30
    #39946515
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
С TADOQuery не сталкивался, но стандартный подход в С++ такой: если объект создается явно (new) то и удалять его надо явно (delete).

Надо ли дополнительно вызывать метод Free() - не знаю, это надо смотреть документацию.
...
Рейтинг: 0 / 0
13.04.2020, 11:38
    #39946549
PrimaryPro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
Dima T

Спасибо.

В документации касательно объекта TObject сказано:

авторNote: In C++ code, do not use Free to destroy an object. Use the delete keyword.

Но в программе у меня предыдущий программист использовал Free. Всё бы ничего, но объем потребляемой памяти разрастается сильно.
...
Рейтинг: 0 / 0
13.04.2020, 12:49
    #39946579
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
PrimaryPro
Но в программе у меня предыдущий программист использовал Free. Всё бы ничего, но объем потребляемой памяти разрастается сильно.

Это называется утечкой памяти. Объет не удалялся и продолжал занимать память до завершения приложения.
...
Рейтинг: 0 / 0
13.04.2020, 13:15
    #39946584
PrimaryPro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
Dima T

Да, утечка памяти. Вроде везде понаставил try .... __finally delete obj

но все равно не помогает. Как вычислить, где происходит утечка? Программа начинает с 3МБ и за час увеличивается примерно на 25-30 МБ
...
Рейтинг: 0 / 0
13.04.2020, 13:35
    #39946596
PrimaryPro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
Подскажите, нужно ли высвобождать память для tProc в нижеприведенном коде после старта потока?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        TimerCheck->Enabled=false;
        TMonDirThread *tProc;
        tProc = new TMonDirThread(true,
            0, //soket
            Status,               //zapros
            "",                 //type
            "",
            "","","",""
        );
...
Рейтинг: 0 / 0
13.04.2020, 13:36
    #39946597
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
PrimaryProКак вычислить, где происходит утечка?

FastMM, DrMemory, штатный CodeGuard.
...
Рейтинг: 0 / 0
13.04.2020, 14:00
    #39946607
PrimaryPro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
Если честно, я в С++ и в Builder новичок. Если расскажете немножко поподробнее буду благодарен безмерно
...
Рейтинг: 0 / 0
13.04.2020, 14:04
    #39946608
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
Значит учись, гугли, читай документацию. Именно так новички становятся специалистами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.04.2020, 14:05
    #39946609
PrimaryPro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
В программе имеется фрагмент:

Код: plaintext
1.
    char * tmptxt = EncMSG.c_str();



Но высвобождения в виде free(tmptxt) нет.

Может ли быть это одной из причин утечки памяти? Стоит ли добавить free(tmptxt)?
...
Рейтинг: 0 / 0
13.04.2020, 14:11
    #39946615
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
PrimaryPro
В программе имеется фрагмент:

Код: plaintext
1.
    char * tmptxt = EncMSG.c_str();



Но высвобождения в виде free(tmptxt) нет.

Может ли быть это одной из причин утечки памяти? Стоит ли добавить free(tmptxt)?

Нет. Тут new нет, поэтому освобождать ничего не надо, все происходит внутри EncMSG.

Боюсь тебе пока рано заниматься такими сложными вопросами как поиск утечек памяти. Для начала просто поизучай основы С++
...
Рейтинг: 0 / 0
13.04.2020, 14:18
    #39946618
PrimaryPro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
Я вообще-то дельфист). А с С++ занимаюсь так как некому, да и интересно тоже
...
Рейтинг: 0 / 0
13.04.2020, 14:32
    #39946630
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
PrimaryProСтоит ли добавить free(tmptxt)?

Попробуй. Отладка краша, который будет результатом этого, займёт у тебя пару дней.

PrimaryProЯ вообще-то дельфист).

В Дельфи работа с памятью ничем не отличается от С/С++.
Модератор: Редактировано
...
Рейтинг: 0 / 0
13.04.2020, 14:38
    #39946634
PrimaryPro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
Спасибо. Буду искать дальше
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]