我最近开始从事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?
如果不需要不安全的内存分配,则使用不安全的上下文没有任何意义.