我最近开始研究C#编程(我以前只研究C(。我开始知道我们需要使用不安全的上下文来使用 C# 程序中的指针作为文档页面Microsoft。
不使用指针的优点之一是
使用不安全的代码会带来安全性和稳定性风险。
但是我们不需要使用不安全的上下文来调用 C 中的函数,这些函数可能包含编写不佳的代码或安全漏洞。公共语言运行库无法检测这些 C 函数中的问题。
这些是我的问题
-
为什么即使 CLR 无法检测到这些代码中的问题,也不需要使用不安全的上下文来执行用 C 编写的函数?
-
不使用不安全的上下文来调用用 C 编写的函数有什么好处?
为什么即使 CLR 无法检测到这些代码中的问题,也不需要使用不安全的上下文来执行用 C 编写的函数?
不安全模式不是关于被调用的方法不安全,C# 代码可能同样不安全。不安全模式是关于被绕过的内存管理。如果通过传递到C++库(如 Win32 库(的 CLR(如此托管(分配变量,则 CLR 仍然可以管理使用的内存段,因为它们仍然是 CLR 变量。
不使用不安全的上下文来调用用 C 编写的函数有什么好处?
如果不需要不安全的内存分配,则使用unsafe
上下文是没有意义的。