logo
Литература_1 / photon_old

Освобождение образов

Структура PhImage_t включает член flags, который упрощает освобождение памяти, используемой образом. Эти флаги указывают, какие члены Вы хотите освободить:

Вызов функции PhReleaseImage() с каким-то образом в качестве аргумента освобождает какие-либо ресурсы, соответствующие биту, установленному во флагах образа.

  • Функция PhReleaseImage() не освобождает саму структуру PhImage_t, а только размещённые в памяти члены её.

  • Функция PhReleaseImage() корректно освобождает память, выделенную функцией PgShmemCreate()

Член flags для образов, созданных функциями ApGetImageres() и PxLoadImage(), не установлен. Если Вы хотите вызвать функцию PhReleaseImage(), чтобы освободить размещённые в памяти члены, Вы должны установить флаг самостоятельно:

my_image->flags = Ph_RELEASE_IMAGE |

Ph_RELEASE_PALETTE |

Ph_RELEASE_TRANSPARENCY_MASK |

Ph_RELEASE_GHOST_BITMAP;

Если образ хранится в виджете, размещённые в памяти члены автоматически освобождаются, когда задаётся новый образ или виджет удаляется, обеспечивая, что соответствующие биты в члене flags структуры PhImage_t устанавливаются перед тем, как образ добавляется к виджету.

    1. Yandex.RTB R-A-252273-3
      Yandex.RTB R-A-252273-4