windows - 在vb中多次调用.clone(),会不会有什么问题?
问题描述
我是一名嵌入式工程师,我从未使用过 Windows 和 Visual Basic。对于我目前的任务,我必须维护和改进在 Windows 上运行的测试系统,用 Visual Studio、C#(也没有经验)编写。该项目使用一些用 Visual Basic 编写的库(所有旧代码)。我发现那里有问题。我不能直接在这里复制代码,但由于法律约束,但它是这样的:
'getter()
dim temp as byte = global_data
Array.reverse(temp);
...
这是一个吸气剂功能。由于里面有一个reverse,所以每次调用这个函数的返回值都是不同的,因为当temp改变时,global_data也改变了。而且我只有在奇数次调用后才能获得真正的价值。以前的处理程序告诉我只调用一次或三次函数......我认为这很愚蠢,并通过添加 .clone() 来改变它,如下所示:
dim temp as byte = global_data.clone()
Array.reverse(temp);
它奏效了 :) 有很多这样的功能,所以我也要对它们进行类似的调整。但由于我不熟悉这个系统的动力学,我怕以后会遇到问题。例如,可以使多个克隆消耗我的 RAM 吗?那些克隆可以被摧毁吗?如果是,我必须销毁它们吗?如何?或者还有其他可能的问题吗?还有其他方法可以做到这一点吗?
提前致谢!
解决方案
Clone
要回答您的问题,不,多次调用没有错。克隆的字节数组只要被引用就会占用内存,但这并不是被克隆的字节数组所独有的。据推测,克隆的字节数组正在传递给其他方法。一旦这些方法被执行,数组将有资格进行垃圾收集,系统会处理它。如果此代码非常频繁地运行,则可能有比分配这些数组并最终进行垃圾回收更有效的更好方法,但是您不会使用 Clone 过度“破坏”任何东西。
推荐阅读
- javascript - 在 SDK 请求方法中将 API 会话身份验证令牌放在哪里?
- angular - 如何在子组件中默认加载嵌套组件
- php - VisualEditor 问题-404 错误-curl7 错误
- testing - 如何解决 Groovy 脚本中的运行错误
- web-deployment - Nuxtjs 错误致命监听 EADDRNOTAVAIL 域:8000
- react-native - 如何在 React Native 中制作交互式绘图应用程序?
- java - 骆驼测试 - 无法创建路线...因为必须在以下位置指定参考:进程
- javascript - 如何制作表格宽度超过100%的固定表头表格
- python-3.x - 如何使用 ODBC 将 python 与 vertica 连接?
- python-2.7 - 循环上的参数化 SQL 查询未正确更新