我需要清除 Byte[] 吗?
Do I need to clear Byte[]?
在我的游戏中,用户可以从图库中选择多张图片并将它们加载到游戏中。我创建了一个从文件路径获取图像的函数。在该函数中,我声明了局部变量 byte[]。所以在读取文件后我需要处理那个字节 [] 以释放内存。这是我的代码:
if (File.Exists(filePath))
{
byte[] fileData = File.ReadAllBytes(filePath);
Texture2D tex = new Texture2D(2, 2);
tex.LoadImage(fileData);
}
从byte[]加载纹理后是否需要清除byte[]????用户可以从图库中选择任何图像文件,因此没有文件大小限制。
简答:否
byte[]
是托管资源。它将被GC完全清理。
文件相关 类 通常涉及非托管资源 - 通常是 OS 文件句柄。但是 File.ReadAllBytes(string)
看起来它遵循我的建议“创建、使用、处置。全部在同一段代码中,最好使用 using 语句。”所以我希望它不会有问题。
网络和数据库 类 涉及未管理的资源 - 通常是网络连接。
很多绘图相关 类 使用非托管资源 - 主要是一些非托管内存以提高性能。
但这只是一个字节[]。与任何 int[] 一样管理。请注意,无论如何您都没有选择,因为 byte nor array 都没有实现 IDisposeable。如果你试图处理它,编译器会想知道你在说什么,因为没有这样的功能。
在我的游戏中,用户可以从图库中选择多张图片并将它们加载到游戏中。我创建了一个从文件路径获取图像的函数。在该函数中,我声明了局部变量 byte[]。所以在读取文件后我需要处理那个字节 [] 以释放内存。这是我的代码:
if (File.Exists(filePath))
{
byte[] fileData = File.ReadAllBytes(filePath);
Texture2D tex = new Texture2D(2, 2);
tex.LoadImage(fileData);
}
从byte[]加载纹理后是否需要清除byte[]????用户可以从图库中选择任何图像文件,因此没有文件大小限制。
简答:否
byte[]
是托管资源。它将被GC完全清理。
文件相关 类 通常涉及非托管资源 - 通常是 OS 文件句柄。但是 File.ReadAllBytes(string)
看起来它遵循我的建议“创建、使用、处置。全部在同一段代码中,最好使用 using 语句。”所以我希望它不会有问题。
网络和数据库 类 涉及未管理的资源 - 通常是网络连接。
很多绘图相关 类 使用非托管资源 - 主要是一些非托管内存以提高性能。
但这只是一个字节[]。与任何 int[] 一样管理。请注意,无论如何您都没有选择,因为 byte nor array 都没有实现 IDisposeable。如果你试图处理它,编译器会想知道你在说什么,因为没有这样的功能。