Использование памяти управления

Освобождение памяти

Время от времени, при получении данных изображения, вы можете хотеть удалить некоторых или все кадры, которые хранятся в памяти. Используя функцию flushdata, можно удалить все кадры, в настоящее время сохраненные в памяти или только тех кадрах, сопоставленных с выполнением триггера.

Следующий пример иллюстрирует, как использовать flushdata, чтобы удалить все кадры в памяти или ценности одного триггера кадров.

  1. Создайте объект получения изображений — Этот пример создает объект ввода видео для устройства получения изображений Windows®. Чтобы запустить этот пример в вашей системе, используйте функцию imaqhwinfo, чтобы получить конструктора Object для вашего устройства получения изображений и заменить тем синтаксисом следующий код.

    vid = videoinput('winvideo',1);
  2. Сконфигурируйте свойства — В данном примере конфигурируют приобретение пяти кадров на триггер и, чтобы показать эффект flushdata, сконфигурировать несколько триггеров с помощью свойства TriggerRepeat.

    vid.FramesPerTrigger = 5
    vid.TriggerRepeat = 2;
  3. Запустите объект получения изображений — Вызывают функцию start, чтобы запустить объект получения изображений.

    start(vid)

    Объект выполняет мгновенный триггер, получает пять кадров данных и повторяет этот триггер еще два раза. После журналирования конкретного количества кадров объект прекращает запускаться.

    Чтобы проверить, что объект получил данные, просмотрите значение свойства FramesAvailable. Это свойство сообщает, сколько кадров в настоящее время хранится в буфере памяти.

    vid.FramesAvailable
    ans =
    
       15
  4. Удалите ценность триггера данных изображения — Вызывают функцию flushdata, задавая режим 'triggers'. Это удаляет кадры, сопоставленные с самым старым триггером.

    flushdata(vid,'triggers');

    Следующие данные показывают кадры, полученные до и после вызова flushdata. Отметьте, как flushdata удаляет кадры, сопоставленные с самым старым триггером.

    Чтобы проверить, что объект удалил кадры, просмотрите значение свойства FramesAvailable.

    vid.FramesAvailable
    ans =
    
       10
  5. Освободите целый буфер памяти — Вызов flushdata, не указывая, что режим удаляет все кадры, сохраненные в памяти.

    flushdata(vid);

    Чтобы проверить, что объект удалил кадры, просмотрите значение свойства FramesAvailable.

    vid.FramesAvailable
    ans =
    
       0
  6. Вымойтесь — Всегда удаляют объекты получения изображений из памяти и переменные, которые ссылаются на них, когда вам больше не нужны они.

    delete(vid)
    clear vid