Утечка памяти
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Утечка памяти

Утечка памяти

Ответ
Поиск в этой теме
Непрочитано 21.02.2007, 15:13 #1
Утечка памяти
mental
 
Регистрация: 26.12.2006
Сообщений: 12

Помогите с сабжем. Запускаю на выполнение свою программу и когда дело доходит до функции vd:insert_table происходи утечка в 200Мб. Причём если выполнить функцию, например, 5 раз, то утечка будет уже 1Гб.

Эта функция создаёт таблицу, обычно где-то размером 6x40.
Код:
[Выделить все]
(defun vd:insert_table (table_title table_insert_point table_stolbci table_data
			column_width row_height / tabelle_ueberschrift tabellen_liste
			vlaxchen_tabelle item spalte zeile zeilen)
  ;; Список наименований столбцов 
  (setq	tabelle_ueberschrift table_stolbci)
  ;; список текста в ячейках построчно: 
  (setq	tabellen_liste table_data)
  ;; вставка табличного объекта 
  (setq	vlaxchen_tabelle
	 (vla-addtable
	   ;; в пространство модели 
	   (vla-get-modelspace
	     (vla-get-activedocument
	       (vlax-get-acad-object)
	     )
	   )
	   ;; точка вставки 
	   (vlax-3d-point table_insert_point)
	   ;; число ячеек 
	   (+ (length tabellen_liste) 2)
	   ;; число столбцов 
	   (length tabelle_ueberschrift)
	   ;; высота строки 
	   8.0
	   ;; ширина столбца 
	   45.0
	 )
  )
  ;; заполнение заголовка таблицы 
  (vla-settext vlaxchen_tabelle 0 0 table_title)
  ;; выравнивание в ячейке 
  (vla-setcellalignment vlaxchen_tabelle 0 0 acmiddlecenter)
  ;; высота текста в ячейке 
  (vla-setcelltextheight vlaxchen_tabelle 0 0 3.0)
  ;; Высота ячейки
  (vla-setrowheight vlaxchen_tabelle 0 (nth 0 row_height))
  ;; Стиль ячейки
  (vla-setcelltextstyle vlaxchen_tabelle 0 0 text_style_name)

  ;; начальный индекс цикла 
  (setq spalte 0)
  (foreach item	tabelle_ueberschrift
    ;; шапка таблицы 
    (vla-settext vlaxchen_tabelle 1 spalte item)
    ;; выравнивание 
    (vla-setcellalignment vlaxchen_tabelle 1 spalte acmiddlecenter)
    ;; высота текста 
    (vla-setcelltextheight vlaxchen_tabelle 1 spalte 3.0)
    ;; Стиль текста в ячейке
    (vla-setcelltextstyle vlaxchen_tabelle 1 spalte text_style_name)
    ;; Ширина столбца
    (vla-setcolumnwidth vlaxchen_tabelle spalte (nth spalte column_width))
    ;; следующий цикл 
    (setq spalte (1+ spalte))
  )
  (vla-setrowheight vlaxchen_tabelle 1 (nth 1 row_height))
  
  ;; начало со 2-й ячейки (первая - нулевая - название таблицы) 
  (setq zeile 2)			 
  ;; первая строка 
  (setq spalte 0)
  ;; цикл по ячейкам 
  (foreach zeilen tabellen_liste
    ;; Заполнение ячеек: 
    (foreach item zeilen
      ;; ввод текста 
      (vla-settext vlaxchen_tabelle zeile spalte item)
      ;; выравнивание
      (if (/= spalte 2)
        (vla-setcellalignment vlaxchen_tabelle zeile spalte acmiddlecenter)
	(vla-setcellalignment vlaxchen_tabelle zeile spalte acMiddleLeft)
      )
      ;; высота текста 
      (vla-setcelltextheight vlaxchen_tabelle zeile spalte 3.0)
      ;; Стиль в ячейке
      (vla-setcelltextstyle vlaxchen_tabelle zeile spalte text_style_name)
      ;; следующий цикл 
      (setq spalte (1+ spalte))
    )
    ;; Высота строки
    (vla-setrowheight vlaxchen_tabelle zeile (nth 2 row_height))
    ;; следующая ячейка 
    (setq zeile (1+ zeile))
    ;; обнуляем цикл 
    (setq spalte 0)
  )
)
Пробывал уже и _purge и (gc) и vlax-release-object дописывать, память не хочет освобождаться. Единственное заметил, что память особождается когда закрываешь рисунок, но ведь должен быть и программный способ.

У меня стоит ADT 2007/2006 + Windows 2000 SP4
Просмотров: 2852
 
Непрочитано 21.02.2007, 17:08
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Попробуй http://www.arcada.com.ua/forum/viewtopic.php?t=950 - может, рецепт от VVA поможет? Хотя лично я не уверен...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.02.2007, 07:40
#3
mental


 
Регистрация: 26.12.2006
Сообщений: 12


Поверить немогу! Память действительно перестала безследно пропадать и ещё таблица начала строиться гораздо быстрее.

Большой tnx тебе
mental вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Утечка памяти