如何删除或重新初始化“新”变量?

use*_*874 5 c# memory-leaks new-operator

在你举报我提出常见问题之前,请听我说完。

我正在编写一个程序来使用 C# 和 Windows 窗体从数据记录器中读取数据。每个通道可能意味着不同的东西,例如升力、阻力和压力。我计划使这些通道可配置。下面是这样一个通道的初始化方式:

private Channel Lift_Channel = new Channel(1);
Run Code Online (Sandbox Code Playgroud)

这会将 Lift_Channel 初始化为引用记录器上的通道 1 的 Channel 对象。

但是,构造方法 Channel(int) 是我可以用来设置通道的唯一方法。如果我想让 Lift_Channel 指向通道 2,我想做这样的事情。

delete Lift_Channel;
Lift_Channel = new Channel(2);
Run Code Online (Sandbox Code Playgroud)

我觉得如果我不能删除 Lift_Channel 然后重新创建它,我会出现内存泄漏错误,因为 Channel(1) 数据会四处浮动。

有任何想法吗?

Ruf*_*s L 4

不,没有什么可删除的。重新分配后,Lift_Channel将不再指向旧的内存地址,内存将被清理。