![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
TarasBer |
![]()
Сообщение
#21
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Заодно я проверил, что дело не в "пустом" значении - я вставил в процедуру деления простой возврат "пустого" значения, без трая. Утечка исчезла.
> Присоедини свой проект, я его прогоню в 2009... Можно в приват, если не хочешь выкладывать в общий доступ. Да там нечего скрывать: я пока не настолько крут, чтобы мой код имело смысл скрывать от чужих глаз. Прикрепленные файлы ![]() -------------------- |
volvo |
![]()
Сообщение
#22
|
Гость ![]() |
А ты знаешь, у меня не вылетает. У тебя вечный цикл while(1). Насколько я понимаю, ты его сделал только, чтобы проверить на утечки? Так вот по 10 минут работало без перерыва, ни одного байта памяти не прибавило... Вводил выражения 1/1 и 1/0... И в том и в другом случае прекрасно считает и результат пишется в Caption формы. В случае деления на 0 - как ты и требовал от функции она возвращает "?".
|
TarasBer |
![]()
Сообщение
#23
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Так вот по 10 минут работало без перерыва, ни одного байта памяти не прибавило...
Странно. Я этот момент проверяю при помощи виндовского Task Managera, или это неправильный метод? У меня настолько палёный билдер? Я его с какой-то шары скачал, если честно. > В случае деления на 0 - как ты и требовал от функции она возвращает "?". Да. -------------------- |
TarasBer |
![]()
Сообщение
#24
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
И надо сказать, что хавает от не спеша, где-то полметра в секунду.
Эскизы прикрепленных изображений ![]() -------------------- |
volvo |
![]()
Сообщение
#25
|
Гость ![]() |
Ну не получается у меня, чтоб пожиралась память... Как только установилось определенное количество памяти (после нескольких первых итераций), так и стоит как вкопанное. Если что - можешь посмотреть видео: Calc.AVI (около 5Мб, кодек indeo 4.х)
За 30 секунд ничего не изменилось... Что-то у тебя с Билдером... Хотя, может быть это в BDS2009 получше работа с памятью, пускай кто-нибудь еще на BCB6 проверит... |
TarasBer |
![]()
Сообщение
#26
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
А что это он сразу 8 метров отхватил? У меня в корректных случаях никогда до 5 не доходит. Или это уже особенности более позднего компилятора?
-------------------- |
volvo |
![]()
Сообщение
#27
|
Гость ![]() |
Это Дебаг-версия + CodeGuard... Если скомпилировать в Release и отключить все, что не надо - будет гораздо меньше.
|
TarasBer |
![]()
Сообщение
#28
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я правильно понимаю, что команда new для создания строки не может вызывать access violation в нормально работающей среде? А то у меня чем дальше, тем круче.
-------------------- |
TarasBer |
![]()
Сообщение
#29
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Мне удалось подключить CodeGuard.
Запустил, ввёл 1/0. Открыл лог, который переименован в тхт и прилагается. Если я правильно его понял, то 5 вызовов malloc 5 вызовов free (я решил по старинке писать). Наборы адресов совпадают. Ставлю бесконечный цикл, запускаю, диспетчер видит утечку. Я сойду с ума. Прикрепленные файлы ![]() -------------------- |
TarasBer |
![]()
Сообщение
#30
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Решил упростить свой случай до предела.
Написал в обработчике нажатия кнопки вот это:
Утечка есть, причём неслабая. Может быть, дело в том, что создаётся объект-исключение, который надо как-то определять и удалять? И как это делать? Сообщение отредактировано: TarasBer - 23.09.2009 13:30 -------------------- |
volvo |
![]()
Сообщение
#31
|
Гость ![]() |
Цитата Может быть, дело в том, что создаётся объект-исключение, который надо как-то определять и удалять? Ничего там не создается... Проверил и Билдером, и GCC - нет утечки. Что-то у тебя с Билдером явно не то. К сожалению, запустить тот EXE-шник, что ты присоединял в 21-ом посте, и проверить, дает ли он утечку, я не могу, он требует библиотеки от BCB6, а у меня их нет. |
TarasBer |
![]()
Сообщение
#32
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тогда ещё вопрос - как надо компилировать программу, чтобы она запускалась на любом компе, где есть винда?
-------------------- |
volvo |
![]()
Сообщение
#33
|
Гость ![]() |
|
TarasBer |
![]()
Сообщение
#34
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Понятно.
Альтернативный вариант - чистое API? Екзешник с утечкой ещё интересен? Сообщение отредактировано: TarasBer - 23.09.2009 14:34 Прикрепленные файлы ![]() -------------------- |
volvo |
![]()
Сообщение
#35
|
Гость ![]() |
Цитата Альтернативный вариант - чистое API? И в этом случае возможны проблемы (при отсутствии Билдера в системе), какие-то библиотеки все равно привяжутся к проекту. Полностью работоспособно только приведенное по ссылке решение.Цитата Екзешник с утечкой ещё интересен? Собственно, интересно было посмотреть, насколько утекает память. Да, за 12 секунд сожрало почти 30 Мб - это много. Попробуй все-таки другой Билдер, скорее всего проблема в этом, ибо я тестировал твой проект (без изменений) и на 2007 и на 2009. Ни там ни там нет утечек. |
TarasBer |
![]()
Сообщение
#36
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
А просканировать как-нибудь тот екзешник, чтоб понять, где глюк, ну и сравнить побайтно с результатом компилирования в ВС2009 - реально?
-------------------- |
volvo |
![]()
Сообщение
#37
|
Гость ![]() |
Реально, только сравнивать надо не EXE-шники, а MAP-файлы (заставить Билдер генерировать MAP-файлы: фактически - ассемблерный код, и сравнивать результаты этой операции для обоих версий Билдера). Только это - чуть позже, у меня еще ремонт в квартире продолжается, я выхожу то с одного компьютера, то с другого, а все, что нужно для подобных детальных сравнений у меня установлено только в одном месте, я туда еще не добрался, комната завалена полностью. На следующей неделе, надеюсь, начну разгребать этот бардак, тогда уже и посмотрю, в чем разница...
|
TarasBer |
![]()
Сообщение
#38
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
А существует ли какой-либо механизм предсказания ошибки вычислений, помимо исключения?
То есть чтобы я, зная два числа, смог заранее, без исключения, сказать, поделится (умножится, сложится, вычтется) ли одно на другое, или нет? -------------------- |
TarasBer |
![]()
Сообщение
#39
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Попытался заняться дальнейшим упрощением "неверного" кода.
Утечка в коде, не содержащем НИ ОДНОГО указателя! Писать сразу 1 / 0 не получится, компилятор палит. Да, я уже скачал отдельно компилятор с другого места. -------------------- |
volvo |
![]()
Сообщение
#40
|
Гость ![]() |
Цитата Утечка в коде, не содержащем НИ ОДНОГО указателя! Значит, в BCB6 такая "хорошая" работа с памятью... Проверь на более новом Билдере. Попробуй проверить на другом С++ компиляторе, есть ли утечка там? Я проверил только что в BDS2009 - результат аналогичен тому, что было выше - сначала плюс несколько килобайт, а потом - без увеличения. |
![]() ![]() |
![]() |
Текстовая версия | 14.08.2025 1:32 |