释放所有内存 - FreeImageAll
函数简介
释放所有已加载的图片内存。此函数会一次性释放所有通过图片加载函数(LoadImage)分配的内存,通常在程序退出或需要清理所有图片资源时使用。使用此函数可以避免逐个释放图片内存,但需要注意释放后所有图片句柄都将失效。
接口名称
FreeImageAll
DLL调用
int FreeImageAll(long ola)
参数定义:
ola
(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。
示例:
// 加载多个图片
long images[10];
int count = 0;
// 加载一组图片
for (int i = 0; i < 5; i++) {
char path[100];
sprintf(path, "D:\\test\\pic%d.png", i);
images[count] = LoadImage(ola, path);
if (images[count] != 0) {
count++;
}
}
// 创建一些新图片
for (int i = 0; i < 3; i++) {
images[count] = CreateImage(ola, 100, 100);
if (images[count] != 0) {
count++;
}
}
printf("共加载和创建了 %d 个图片\n", count);
// 使用这些图片进行处理
// ...
// 处理完成后,一次性释放所有图片内存
int ret = FreeImageAll(ola);
if (ret == 1) {
printf("所有图片内存释放成功\n");
} else {
printf("释放内存失败\n");
}
// 注意:此时所有images数组中的句柄都已失效
// 如果需要继续使用图片,需要重新加载
COM调用
int FreeImageAll()
参数定义:
此接口无参数。
示例:
# 加载多个图片
images = []
# 加载一组图片
for i in range(5):
image = ola.LoadImage(f"D:\\test\\pic{i}.png")
if image != 0:
images.append(image)
# 创建一些新图片
for i in range(3):
image = ola.CreateImage(100, 100)
if image != 0:
images.append(image)
messagebox(f"共加载和创建了 {len(images)} 个图片")
# 使用这些图片进行处理
# ...
# 处理完成后,一次性释放所有图片内存
ret = ola.FreeImageAll()
if ret == 1:
messagebox("所有图片内存释放成功")
else:
messagebox("释放内存失败")
# 注意:此时所有images列表中的句柄都已失效
# 如果需要继续使用图片,需要重新加载
返回值
整型数:
- 0: 释放失败
- 1: 释放成功
注意事项
- 调用此函数后,所有已加载的图片句柄都将失效,不能再使用
- 如果只需要释放特定图片的内存,请使用 FreeImagePtr 函数
- 此函数通常在以下情况使用:
- 程序退出前的清理工作
- 需要释放大量图片内存时
- 切换场景或重新加载所有资源时
- 释放后如果需要继续使用图片,必须重新加载
- 建议在调用此函数前,确保没有正在进行的图片处理操作