返回时C#函数变量是否被清除?

时间:2018-03-08 06:29:11

标签: c# function

函数返回时是否清除了C#变量(包括数组)?如果我在函数中保存密码等敏感数据并且在我使用它之后不清除它,攻击者是否能够在该时间点访问内存转储时查看数据,并了解具体信息记忆地址?

1 个答案:

答案 0 :(得分:-1)

在C#中,函数返回后不会立即清除数据 由于该语言具有惰性垃圾收集,因此不会立即销毁对象(和数组是对象)。相反,他们一直待到Common Language Runtime决定释放那个记忆 但是,结构和值类型不是这种情况。它们存储在堆栈中并在函数返回时清除。 要保护数据,请考虑使用IDisposable接口并手动将所有阵列成员设置为其默认值。