|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
|
||||||
Операция delete вызывает ошибку Access violation at address30.04.2014, 15:28. Показов 6712. Ответов 39
Метки нет (Все метки)
Доброго времени суток, уважаемые форумчане!
Компьютер HP omnibook xe4100, Mobile Intel Celeron 1.14ГГц, ОЗУ 480Мб ОС Windows XP SP2. Borland C++ Builder 6. Программист на уровне "Hello World" + хаотичный набор знаний о типах данных, функциях и указателях) Имеется некое устройство - лазерный 2D сканер RF625 белорусской фирмы RIFTEK. Сканер подключен к компьютеру через Ethernet напрямую кабелем. Фирма прислала исходник программы на С++, а также необходимые библиотеки для работы со сканером. Данный исходник успешно компилируется в Borland C++ Builder 6, подключается к сканеру по TCP/IP, получает от сканера данные и отключается, используя функции из фирменной библиотеки. Прорамма умеет работать одновременно с несколькими сканерами в сети. Однако в конце программы (примерно 100 строка) имеется операция delete vRF625.back(), которая поначалу вызывала ошибку (версия программы с визуальными компонентами - на форме с кнопкой) Access violation at address 00344001 in module 'RFDEVICE.DLL'. Write of address C08CAE7C а теперь (то же самое написал под консоль) подвешивает билдер и саму программу (процессор загружается на 70 и 30% соответственно). Пробовал компилировать на другом компьютере с Windows 7 - эффект аналогичный - зависает на операции delete vRF625.back(). Производитель ответил, что у них подобная ошибка не возникает, всё работает нормально. Но компилируют в CodeGear RAD Studio 2009 C++ Builder 2009. Если удалить операцию delete vRF625.back(), то программа (если функцию запустить в цикле) начинает потихоньку кушать память. Каким методом можно выявить причину возникновения ошибки и зависания? Или, может быть, кто увидит очевидную ошибку в коде? Ведь исполнить это не получится из-за отсутствия сканера )
http://www.cplusplus.com/reference/vector/vector/ vector::back http://www.cplusplus.com/reference/vector/vector/back/ vector::pop_back http://www.cplusplus.com/reference/vector/vector/pop_back/
0
|
||||||
| 30.04.2014, 15:28 | |
|
Ответы с готовыми решениями:
39
Помогите устранить ошибку: Access violation at address Ошибка access violation at address in module borlndmm.dll write of address Access violation at address 00404083 in module 'Projectl.exe'. Read of address 00000000. |
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
||||||
| 21.05.2014, 12:53 | ||||||
|
npp, я ж уже писал...
1
|
||||||
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
|
|
| 22.10.2014, 15:02 [ТС] | |
|
easter, добрый день! Возвращаюсь к теме. Попробовал скомпилировать свой проект с Вашей библиотекой Project1.dll, созданной в C++Builder - операция delete vRF625.back по-прежнему во время исполнения вызывает ошибку Access Violation at address 001E3FDE... Причём Ваш Project1.exe работает без ошибок.
Ранее переустановил Windows7, установил CodeGear C++ Builder 2007 Lite, установил любимый C++Builder 6. Кое-что обнаружил. Создал с нуля и скомпилировал программу в CodeGear C++, заработала без ошибок. В настройках проекта в разделе Linking установил галочку Dynamic RTL, ошибка на операции delete vRF625.back вновь появилась. Убираю галочку, программа отрабатывает без ошибки. Перебрал все галочки по одной в настройках - на ошибку влияет только Dynamic RTL. В C++Builder такой фокус не прошёл - ошибка есть независимо от галки Use dynamic RTL. И независимо от режимов Debug/Release.
0
|
|
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
|
||||||
| 23.10.2014, 16:41 [ТС] | ||||||
|
c0rvax, Попробовал Ваш код в C++Builder, который в сообщении #21, работает без ошибок, коннект со сканером, дисконнект происходит успешно, но кушает память. За 480 циклов (по 3 секунды) занимаемая программой память возросла с 760 кБ до 888 кБ скачками по 4 кБ.
0
|
||||||
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
|
| 23.10.2014, 20:05 | |
|
npp, на самом деле, это твой код :-) Я лишь заменил динамическое выделение памяти на статическое. Есть мнение, что если внести Initialize и CleanUp внутрь цикла, то память кушаться не будет. В любом случае, это лучше, чем Access Violation... И как ни крути, это косяк разработчиков.
0
|
|
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
|
||||||
| 24.10.2014, 10:23 [ТС] | ||||||
|
Avazart, утечка недопустима, посмотрите мой пост #17 (последний абзац).
c0rvax, утечка есть во всех трёх вариантах зацикливания программы.
0
|
||||||
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
|
| 24.10.2014, 11:24 | |
|
npp, тогда такой вариант. Предлагаю вынести весь код в отдельную функцию и вызывать её в цикле из main, а в самой функции цикл не делать, естественно.
0
|
|
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
|
||||||
| 30.10.2014, 12:42 [ТС] | ||||||
|
c0rvax, попробовал, жрёт память всё равно. Если сканер в сети есть, то жрёт. Если нету - не жрёт.
Avazart, пробовал. Самые первые их библиотеки не подошли, т.к. были скомпилированы для Visual C. Это я выяснил в Интернете, на правильность вывода не претендую. Линковщик выдавал ошибку [Linker error]`…RFDevice.lib contains invalid OMF record, type 0x21 (possibly COFF) Попытка конвертирования библиотеки с помощью утилиты coff2omf.exe от Borland результата не принесла (получается файл нулевого размера). По моей просьбе производитель скомпилировал библиотеку для C++Builder, которая заработала, но описанными в шапке темы проблемами.
0
|
||||||
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
|
|
| 12.12.2014, 08:34 [ТС] | |
|
Avazart, предыстория такова: купили лазерный сканер RF625 ф. Riftek, я скачал библиотеки с их сайта, подключил их, попробовал скомпилировать в С++, линковщик выдал ошибку
[Linker error]`…RFDevice.lib contains invalid OMF record, type 0x21 (possibly COFF) в Инете нашёл, что эта ошибка из-за того, что библиотека написана не для С++ (а для Visual C) и её надо конвертировать для С++. Тогда Riftek прислал библиотеку для С++, которая заработала, но с ошибкой, озвученной в топике. Параллельно программированием сканера занялся программист на Delphi, не знаю какую он там скачал с сайта, но у него библиотека нормально заработала, память не кушает. Мне нужно такую же программу написать на С++, чем я и занимаюсь, когда настроение есть. P.S. До этого я писал аналогичную программу, но для старых версий сканера RF620, которые в данный момент успешно работают в производстве. Библиотеки там были конечно другие.
0
|
|
|
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
|
||
| 12.12.2014, 09:42 | ||
|
Добавлено через 11 минут На чем основана уверенность разработчика в том, что класс, экспортированный из dll собранной одним компилятором, будет корректно работать в приложении, собранном другим мне лично пока абсолютно не понятна. Пишите обертку - dll на CodeGear с plain С интерфейсом, в ней создавайте/уничтожайте объект и транслируйте plain С вызовы в вызовы методов класса. Так изначально выглядит SDK большинства адекватных производителей.
0
|
||
| 12.12.2014, 10:05 | ||
|
0
|
||
|
|
|||||||
| 12.12.2014, 13:06 | |||||||
|
demmax2004,
0
|
|||||||
|
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
|
||
| 12.12.2014, 13:30 | ||
|
implib -a libname.lib libname.dll coff2omf - более для статических
0
|
||
|
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
|
|
| 12.12.2014, 13:45 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
|
||||||
| 03.06.2015, 12:27 [ТС] | ||||||
|
Здравствуйте! Чёрт с ним, с жором памяти, теперь другая проблема:
В строке 43 имеется вызов функции получения данных со сканера scanner.GetResult(&lpBuffer);. Если закомментировать её, то программа компилируется, запускается и отрабатывает нормально. Если раскомментировать её, то при нажатии в C++Builder 6 кнопки RUN на мгновение появляется окно консоли и сразу исчезает, программа не отрабатывает (в конце есть пауза Sleep(2000), я бы заметил результат работы программы. Если нажать Compile или Build, то компилирование происходит успешно с соответствующим сообщением ОК, скомпилированным количество строк и т.д. Если внести в программу ошибку, то компилятор видит её. Ещё заметил, что компилятор перестал предупреждать об неиспользуемых переменных в программе. Хотя вчера предупреждения были. Вносил в программу лишние переменные - Builder`у пофиг. Что с этой функцией может быть не так? Почему программа не отрабатывает даже команды, которые находятся выше вызова этой функции? Ставил в качестве индикаторов cout и Sleep(2000) в main`e и в теле функции - не отрабатывают. Консоль просто сразу закрывается. На фото результат успешного выполнения программы с закомментированной строкой scanner.GetResult(&lpBuffer); Во вложении описание классов библиотек от ф. Riftek/
0
|
||||||
|
0 / 0 / 0
Регистрация: 30.04.2014
Сообщений: 37
|
|
| 08.06.2015, 11:06 [ТС] | |
|
Вопрос снимаю, использовал другую похожую функцию GetNormalizedResult, которая не зависает.
0
|
|
| 08.06.2015, 11:06 | |
|
Access violation at address 004A9FE5 in module 'Project1.exe'. Read of address 0003FFFC Access violation at address 32ABE860 in module cc32100mt.dll. read of address f8338338 Access violation at address 501F084A in module vcl120.bpl. Read of address 00000374 Ошибка Access violation at address XXXXXXX in module 'vcl240.bpl'. Read of address XXXXXX access violation at address 40009720 in module 'rtl60.bpl'. read of address Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс
Ссылка на сгенерированную музыкальную композицию:
https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013
Я говорю, что Время- как вода
течет. . .
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|