Страница 1 из 1
Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 1:39
muskin
Здравствуйте.
C6.3(ABC)
Возникла такая проблема.
Редактирую форму, на ней ,примерно, около 400 объектов (16 однотипных region-ов, в каждом по 22 элемента, плюс еще разное).
Наступает момент, когда при копировании нескольких элементов возникает ошибка:
Storage Error
Out of Memory (heap overflow).
Оболочка Clarion-a вылетает.
Подскажите, где нужно увеличить heap_size.
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 9:50
Дед Пахом
Проверьте размер структуры окна - она не может превышать 64K.
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 12:38
muskin
Глупый вопрос - а как?
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 14:17
Дед Пахом
Зайдите в текстовое представление WINDOW и скопируйте в файл, ну и размер файла всё покажет.
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 16:48
muskin
Получилось ~62KB.
Спасибо за науку.
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 16:51
Igor
Попробуй динамически создавать контролы (CREATE(...))
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 17:20
muskin
Скорее всего подойдет Clone(...), а для вставки embeds придется нумеровать поля.
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 19:37
Дед Пахом
Кстати, ещё в 7-ке ограничнение на 64К сняли.
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 20:43
Дед Пахом
Можно в текстовом представлении окна поудалять не сильно нужные атрибуты контролов, как то: TIP, FONT... Можно сэкономить пару-тройку килобайтов. А при необходимости восстановить их после OPEN(Window) с помощью ?ControlUse{prop:...}
Re: Out of Memory (heap overflow
Добавлено: 17 Декабрь 2011, 23:28
Shur
Не пытаясь обидеть автора. А все ли 16 регионов с 22 контролами каждый на одном экране?
Если нет, то может обойтись одним единственным? И чуть-чуть параметризации.
Если этот вариант не подходит, то лучше переходите на С7/C8, а то глядишь, вам 17-й регион понадобится. -- Там этой проблемы точно нет. Сам сталкивался и сражался с ней на С6.
Проверялось и раньше при миграции приложения, и недавно, сам себе не доверяя за давностью, снова проверял, отвечая в телеконференцию.
Кстати, в 16-битной IDE есть и другие, сходные с этим, ограничения: на число элементов меню во фрейме; на число процедур в едином app.
Учитывайте это при разработке.
Re: Out of Memory (heap overflow
Добавлено: 18 Декабрь 2011, 2:30
muskin
Всем спасибо за отклик. Все лишнее удалил (в основном Tip-ы и Ico-ы). Вопрос для меня решен.
Не думал, что для C6... это может служит ограничением. Для меня 64KB(Пахомыч) - это просто новая копилка.
Out of Memory (heap overflow
Добавлено: 14 Октябрь 2016, 20:24
RaFaeL
Отпишусь сюда, вдруг кому-то понадобится. Сегодня наткнулся на такую ошибку, но в другой ситуации - вылетало после сборки приложения. Кучу всего перекопал, нашел решение методом тыка - надо удалить файл C60pe.dat в папке с кларионом (у кого ентерпрайз видимо будет другое название). Там хранятся для чего-то все пути, когда-либо компилировавшиеся (может кэш какой), и когда он становится примерно 3,5 мб то возникает ошибка. Актуально только для С6 и скорее всего также для более ранних