我最近开始从事C#编程(之前我只在C上工作)。我开始知道我们需要使用不安全的上下文将C#程序中的指针用作Microsoft docs page。
不使用指针的一个优点是
使用不安全的代码会带来安全性和稳定性风险。
但我们不需要使用不安全的上下文来调用C中的函数,这些函数可能包含编写糟糕的代码或安全漏洞。 Common Language Runtime无法检测这些C函数中的问题。
这些是我的问题
为什么不需要使用不安全的上下文来执行用C编写的函数,即使CLR无法检测到这些代码中的问题?
不使用不安全的上下文来调用用C编写的函数有什么好处?
答案 0 :(得分:4)
为什么不需要使用不安全的上下文来执行用C编写的函数,即使CLR无法检测到这些代码中的问题?
不安全模式不是关于被调用的方法不安全,C#代码同样不安全。不安全模式是关于被绕过的内存管理。如果你通过CLR(如此管理)分配变量,它们被传递给C ++库,比如Win32库,那么CLR仍然可以管理所使用的内存段,因为它们仍然是CLR变量。
不使用不安全的上下文调用用C语言编写的函数可能有什么好处?
如果您不需要不安全的内存分配,则使用const express = require('express');
var app = express();
[...]
var allowCrossDomain = function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type,Authorization,refreshToken');
next();
};
[...]
app.use(allowCrossDomain);
上下文毫无意义。