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

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

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

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

Спасибо.

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

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

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

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

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

но все равно не помогает. Как вычислить, где происходит утечка? Программа начинает с 3МБ и за час увеличивается примерно на 25-30 МБ
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
    #39946596
PrimaryPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, нужно ли высвобождать память для 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
Подскажите пожалуйста, как правильно удалять объект TADOQuery, с помощью delete или free
    #39946597
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PrimaryProКак вычислить, где происходит утечка?

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

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



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

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

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



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

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

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

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

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

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

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


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