微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在vb中多次调用.clone,是否会引起麻烦?

如何解决在vb中多次调用.clone,是否会引起麻烦?

我是一名嵌入式工程师,并且从未使用过Windows和Visual Basic。 对于我当前的任务,我必须维护和改进在Windows上运行的,以Visual Studio C#编写的测试系统(也没有经验)。 该项目使用一些用Visual Basic(所有旧代码)编写的库。我发现那里有问题。我不能在这里直接复制代码,但是由于法律约束,所以就像这样:

'getter()
dim temp as byte = global_data
Array.reverse(temp);
...

这是一个吸气功能。由于内部存在反向,因此每次调用后此函数的返回都是不同的,因为当temp更改时,global_data也会更改。而且只有在通话次数奇数之后,我才能获得实际价值。以前的处理程序告诉我只调用一次或三次函数...我认为这很愚蠢,并通过添加.clone()来更改它,如下所示:

dim temp as byte = global_data.clone()
Array.reverse(temp);

它奏效了:) 有很多这样的功能,所以我也会对它们进行类似的调整。 但是由于我不熟悉该系统的动态特性,因此以后恐怕会遇到问题。例如,可以使多个克隆消耗我的RAM吗?那些克隆能被销毁吗?如果是,我必须销毁它们吗?怎么样? 还是还有其他可能的问题? 还有其他方法吗?

谢谢!

解决方法

要回答您的问题,多次调用Clone并没有错。 只要被引用,克隆的字节数组将占用内存,但这并不是要克隆的字节数组所独有的。大概是将克隆的字节数组传递给其他方法。一旦执行了这些方法,该数组将可以进行垃圾回收,并且系统将对其进行处理。如果这段代码非常频繁地运行,那么可能有比分配和最终垃圾回收这些数组更有效的方法,但是您不会使用Clone来“破坏”任何内容。

,

对于基本类型的变量,克隆方法复制其值,这需要堆栈为其分配空间。 值类型在堆栈中分配内存。它们具有自己的生命周期,因此无需管理即可自动分配和释放它们。因此,您不必担心占用大量内存,多次调用不会造成麻烦。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?