为什么从C#程序调用C函数不需要不安全的上下文?

我最近开始从事C#编程工作(之前我仅从事C语言工作).我知道我们需要使用不安全的上下文在C#程序中将指针用作Microsoft docs page.

不使用指针的优点之一是

Using unsafe code introduces security and stability risks.

但是,我们不需要使用不安全的上下文来调用C中的函数,因为C中可能包含编写不良的代码或安全漏洞. Common Language Runtime无法检测到这些C函数中的问题.

这些是我的问题

>为什么即使CLR无法检测到这些代码中的问题,也不需要使用不安全的上下文来执行用C编写的函数?
>不使用不安全的上下文来调用用C编写的函数有什么好处?

解决方法:

Why it is not required to use unsafe context to execute functions written in C even though CLR can’t detect problems in these code?

不安全模式并不意味着所调用的方法不安全,C#代码同样可以不安全.不安全模式与绕过的内存管理有关.如果通过CLR(如此管理)分配变量(这些变量已传递给Win32库之类的C库),则CLR仍可以管理使用的内存段,因为它们仍然是CLR变量.

What may be the advantage of not using the unsafe context for calling functions written in C?

如果不需要不安全的内存分配,则使用不安全的上下文没有任何意义.

上一篇:c# – 防止Thread.CurrentPrincipal跨应用程序域传播


下一篇:scrapy——9 Scrapy 设置随机 User-Agent