相当于C#"不安全"代码中的memset

Tit*_*tus 0 c# c++-cli

我有一个C#DLL,其代码派生自一个基类,它是用托管C++编写的.(我对基类代码没有任何控制权)

此基类(在托管C++中)具有成员

int *buffer
Run Code Online (Sandbox Code Playgroud)

预期派生类(在C#中)是memset(用零填充).派生类知道缓冲区的大小.

我使用不安全的上下文,在派生类中访问基类的成员"int*buffer".请告诉我有什么特别的方法可以在c#中的"不安全"上下文中设置缓冲区.

我已经研究过这个与C#中的memset相同的是什么?有关详细信息,但我想知道有什么特别针对"不安全"的背景.

背景:这是一个转换项目,其中派生类本身之前是托管c ++.现在我将派生类DLL单独转换为C#.我也无法控制基类代码!当前代码流如下:只有派生类知道缓冲区的大小.基类通过从派生中获取缓冲区的大小来为该特定大小创建内存,但它不会填充零.派生类Zero首先填充它,然后需要用其内容适当地填充缓冲区.虽然很奇怪,但事实就是如此.

谢谢!

Rot*_*tem 5

好吧,有... memset.当你可以调用真实的东西时,为什么要选择替代品呢?

[DllImport("msvcrt.dll", EntryPoint = "memset", CallingConvention = CallingConvention.Cdecl, SetLastError = false)]
public static extern IntPtr MemSet(IntPtr dest, int c, IntPtr count);
Run Code Online (Sandbox Code Playgroud)

取自pinvoke.net

编辑

正如@Hans在OP注释中正确提到的那样,如果你还不知道*buffer的大小,这是没用的.