|
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 16
|
|||||||||||
Утечка памяти. Функция работы с изображениями выполняется в стороннем потоке.23.12.2013, 15:30. Показов 1678. Ответов 19
Метки нет (Все метки)
Доброго времени суток! Не могу решить проблему(( Есть функция работы с изображениями и выполняется эта функция в стороннем потоке...
Вот функция:
Памяти на 2003 4 Гб (так как 32 бита, то видно есстественно 3,24 примерно), виртуальной памяти 4Гб... Помогите плииз, идей нет уже, в интернете ничего не нашел полезного Добавлено через 42 минуты Ошибка ( по крайней мере первая ) вылазит после строк
0
|
|||||||||||
| 23.12.2013, 15:30 | |
|
Ответы с готовыми решениями:
19
Функция в стороннем потоке Утечка памяти в потоке
|
|
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 16
|
|||||||||||
| 24.12.2013, 10:14 [ТС] | |||||||||||
|
Потоки синхронизированы мьютексами... По сути я и не понимаю ничего именно поэтому...
0
|
|||||||||||
|
|
|
| 24.12.2013, 11:05 | |
|
TStringList , TBitmap - визуальный компоненты. С визуальными компонентами можно работать в других потоках только через Synchronise( ИМЯ ВАШЕЙ ФУНКЦИИ ); - фактически выполнение будет в потоке программы.
Или Переписывайте функцию так, чтобы она не использовала в свём теле работу с VCL компонентами, или Synchronise( ИМЯ ВАШЕЙ ФУНКЦИИ ); Иначе глюки.
1
|
|
|
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 16
|
|
| 24.12.2013, 11:08 [ТС] | |
|
Спасибо, а можете подсказать, что можно использовать вместо TBitmap в моем случае? HBITMAP ?
0
|
|
|
|
|||
| 24.12.2013, 12:51 | |||
|
Добавлено через 4 минуты Вопрос только где. Кроме того кода мало, и вообще не понятно что он доложен делать. GibbonCho, Выложите все исходники, и укажите чего вы хотели добиться.
0
|
|||
|
Супер-модератор
|
|
| 24.12.2013, 13:17 | |
|
Что нового в этой цитате, и как она опровергает тот факт, что компоненту TBitmap не нужна синхронизация для работы с ним в доп. потоке (когда он в этом потоке и был создан)? Это не потомок TGraphicsControl, не потомок TWinControl, это даже не потомок TControl, а всего лишь наследник TPersistent... Так что никакого отношения к синхронизации в этом смысле утечка не имеет. Будет больше кода (хотя бы код, который можно запустить и убедиться в наличии утечки) - будет информация по предотвращению утечек. Гадать на кофейной гуще - неинтересно.
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||||||||||
| 24.12.2013, 13:47 | ||||||||||
|
Не по теме:
Если б проблема была в синхронизации, то все бы падало с ошибкой доступа.
0
|
||||||||||
|
|
||
| 24.12.2013, 14:07 | ||
|
Но так как там куча - не предъявленных функции, непонятных телодвижении, и мы еще знаем он каких-то потоках, то тяжело что сказать ... Может там просто памяти не хватает на 1000 потоков и 1000 картинок ...
0
|
||
|
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 16
|
|
| 25.12.2013, 08:25 [ТС] | |
|
Ок, Господа, проект большой, поэтому сейчас выдерну проблемный кусок, скомпилирую и выложу код)
Добавлено через 17 часов 36 минут Выдернул кусок из проекта и засунул его в новый, в котором создаю 5 потоков и выполняю ту же функцию, но проблем на 2003 винде не обнаружил... Значит проблема не в самой функции... Выкладывать весь код проблемно ибо он большой очень, попробую поискать причину вне функции... Подскажите пожалуйста, могут ли проблемы возникать в связи с тем, что в проекте много форм (штук 10-12) и на формах много кнопочек и других компонентов среды C++ Builder? Читал о таком на некоторых форумах
0
|
|
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
|
| 25.12.2013, 10:10 | |
|
GibbonCho, утечка возможна только при некорректном использовании динамических объектов/переменных. Вряд ли проблема кроется в библиотеках билдера, и от количество форм и кнопочек тоже вряд ли зависит.
0
|
|
|
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 16
|
|
| 25.12.2013, 11:30 [ТС] | |
|
Дело в том, что если не использовать именно эту функцию, то все хорошо и проблем нет... В моем проекте можно делать много разных операций, в основном с текстом... За каждую операцию отвечает своя функция... Я проверял все функции и все ок, но если использовать функцию Images(), то примерно после 400-500 вызовов при 5ти потоках вылазит подобная ошибка... Просмотрел весь проект, проверил правильно ли стоят мьютексы, проверил все ли динамически созданные объекты удаляются... Идей нет уже... С одной стороны так как минипроект работает, значит проблема где-то вне функции, с другой стороны если в большом проекте не использовать только эту функцию, то все работает хорошо...(
0
|
|
|
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
|
|
| 25.12.2013, 14:35 | |
|
GibbonCho, та ошибка, которая "вылазит" - это что за ошибка? Дословно? Системная? Или свой обработчик? Как именно определено, что она появляется после указанных строк? Шаманство с удалением старых объектников, ребилдом и прочим использовалось?
0
|
|
|
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
|
|
| 25.12.2013, 15:13 | |
|
- Некоторые новички почему-то с такой легкостью производят километры кода, не задумавшись
ни на секунду, как его оптимизировать и сделать надежней. Самое плохое, что они еще гордятся этим километражом! Очень плохая черта. Отсюда и такие ошибки ...
0
|
|
|
|
|||||||||||
| 25.12.2013, 15:50 | |||||||||||
|
GibbonCho,
А почему вы *kaka созданный до if {} :
Переносите
0
|
|||||||||||
| 25.12.2013, 15:50 | |
|
Помогаю со студенческими работами здесь
20
Вектор, утечка памяти, функция создания и выделение памяти Утечка памяти после работы программы Утечка памяти программы работы с COM портом Утечка памяти после долгой работы компьютера Работа с изображениями в новом потоке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|