ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Управление памятью Буфера результата


Основное различие между списками буфера результата и сопоставимыми списками результата AutoLISP - то, что ObjectARX-приложение должно явно управлять списками, которые это создает и использования. Создает ли приложение список или имеет тот, пропускал к этому, это - ответственность приложения выпустить буфера результатов, которые это размещает. ObjectARX не имеет никакой автоматической сборки "мусора", поскольку AutoLISP делает. Приложение должно вызвать библиотечную функцию acutRelRb () чтобы выпустить динамически размещенные буфера результатов, когда приложение закончено с ними.

AcutRelRb () функция выпускает полный список, который следует за указанным буфером результатов, включая указанный (главный) буфер, непосредственно и любая строка оценивает это буфера в точке списка к. Чтобы выпускать строку без того, чтобы удалить буфер непосредственно, или выпускать строку, принадлежащую на статический буфер результатов, приложение должно вызвать функцию стандартной библиотеки C free().

ПРЕДУПРЕЖДЕНИЕ! Не запишите данные к динамическому местоположению, которое не было размещено с прямым, вызывает к malloc () или с ObjectARX библиотекой (включая acutNewRb ()). Это может разрушать данные в памяти. Наоборот, вызывая free() или acutRelRb() чтобы выпустить данные, который был размещен статически — в статическом или объявлении — динамической локальной переменной также, может разрушать память. Вставка статически размещенной переменной, типа строки, в список буфера результата заставляет вашу программу терпеть неудачу, когда Вы выпускаете список с acutRelRb ().

Выборка вызывает к acutRelRb() появляются в нескольких из примеров кода в следующих секциях.



Содержание раздела