欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

问什么是 C# 中的 Delphi "ZeroMemory"?

最编程 2024-03-24 15:30:16
...

.NET框架对象总是初始化为已知的状态。

.NET框架值类型自动“归零”--这意味着框架保证在将其返回给您使用之前将其初始化为其自然默认值。由值类型(例如数组、结构、对象)组成的事物具有类似的初始化字段。

通常,在.NET中,所有托管对象都被初始化为默认对象,而且从来没有像在其他非托管环境中一样,对象的内容不可预测(因为它包含恰好位于该特定内存位置的数据)。

答:您不需要这样做,因为.NET将自动为您“零”对象。但是,您应该知道每个值类型的默认值是什么。例如,bool的默认值为false,而int的默认值为零。

非托管对象

“零”内存区域通常只需要与外部的、非托管的库进行交互。

如果您有一个指向内存区域的固定指针,其中包含要传递给外部非托管库(例如用C编写)的数据,并且您想要对内存的这一部分进行零化,那么您的指针很可能指向一个字节数组,您可以使用一个简单的for-循环来实现它的零。

离题说明

另一方面,如果在.NET中分配了一个大型对象,则尝试重用它,而不是丢弃它并分配一个新对象。这是因为任何新对象都会被.NET框架自动“归零”,对于大型对象,这种清除将导致隐藏性能的影响。

推荐阅读