跳转到内容

内存分配

内存分配

对于任何较大规模的内存分配,请使用 After Effects 提供的内存分配功能。对于小型分配,你可以使用 newdelete,但这是例外情况,而不是常规做法。在低内存条件下(例如在 RAM 预览期间),插件必须优雅地处理内存不足的情况,并且不要与 After Effects 竞争操作系统内存。通过使用我们的内存分配函数,After Effects 可以知道何时释放缓存的图像,以避免内存交换。如果不使用我们的函数进行大规模内存分配,可能会导致系统锁定、崩溃和技术支持电话。请不要这样做。

如果你正在包装现有的 C++ 类,请创建一个基类,为该类实现 newdelete,并从中派生。对于重载 STL,我们不建议你重载全局的 newdelete。相反,请在模板定义中提供一个分配器。

After Effects 传递给你的句柄在你被调用之前会被锁定,并在你返回后解锁。


PF_HandleSuite1

函数用途替代函数
host_new_handle分配一个新的句柄。PF_NEW_HANDLE
PF_Handle (*host_new_handle)(
A_HandleSize size);
host_lock_handle锁定一个句柄。PF_LOCK_HANDLE
void (*host_lock_handle)(
PF_Handle pf_handle);
host_unlock_handle解锁一个句柄。PF_UNLOCK_HANDLE
void (*host_unlock_handle)(
PF_Handle pf_handle);
host_dispose_handle释放一个句柄。PF_DISPOSE_HANDLE
void (*host_dispose_handle)(
PF_Handle pf_handle);
host_get_handle_size返回传入句柄所指向的可重新分配块的大小(以字节为单位)。PF_GET_HANDLE_SIZE
A_HandleSize (*host_get_handle_size)(
PF_Handle pf_handle);
host_resize_handle调整句柄的大小。PF_RESIZE_HANDLE
PF_Err (*host_resize_handle)(
A_HandleSize new_sizeL, PF_Handle *handlePH);