社区
C#
帖子详情
csc 的 /unsafe 到底做了什么?
aimeast
2010-04-04 09:52:07
csc 加上 /unsafe 选项就可以使用非安全代码了。
为什么不加这个选项就不可以使用非安全代码?
好像加了 /unsafe 之后,IL代码没有什么变化。
加了这个参数,编译器在生成的二进制文件里到底做了什么?CLR会有什么特殊机制?
是特殊的内存管理,还是别的?还是什么都没做?
请高手来解答!
...全文
159
5
打赏
收藏
csc 的 /unsafe 到底做了什么?
csc 加上 /unsafe 选项就可以使用非安全代码了。 为什么不加这个选项就不可以使用非安全代码? 好像加了 /unsafe 之后,IL代码没有什么变化。 加了这个参数,编译器在生成的二进制文件里到底做了什么?CLR会有什么特殊机制? 是特殊的内存管理,还是别的?还是什么都没做? 请高手来解答!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
段传涛
2010-04-05
打赏
举报
回复
请问这些“允许”和“不允许”是对于编译器的,还是对于CLR的?
--------clr的 找个代码测试就出来了
---------弄明白这个东西 ,还要了解一下GC
aimeast
2010-04-04
打赏
举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
默认情况下, C#编译器产生的代码都是安全的
采用非安全模式编译文件
非安全代码允许直接操作内存地址以及这些地址上的字节。
使用不安全代码将引起安全风险和稳定性风险。
[/Quote]请问这些“允许”和“不允许”是对于编译器的,还是对于CLR的?
wuyq11
2010-04-04
打赏
举报
回复
默认情况下, C#编译器产生的代码都是安全的
采用非安全模式编译文件
非安全代码允许直接操作内存地址以及这些地址上的字节。
使用不安全代码将引起安全风险和稳定性风险。
ChrisAK
2010-04-04
打赏
举报
回复
[Quote=引用 2 楼 aimeast 的回复:]
引用 1 楼 wuyq11 的回复:
默认情况下, C#编译器产生的代码都是安全的
采用非安全模式编译文件
非安全代码允许直接操作内存地址以及这些地址上的字节。
使用不安全代码将引起安全风险和稳定性风险。
请问这些“允许”和“不允许”是对于编译器的,还是对于CLR的?
[/Quote]编译器.
其实看下生成的IL代码ref和out也是用了指针的.
不过那是处于编译器控制下的指针使用,所以是"safe"的.
xingyuebuyu
2010-04-04
打赏
举报
回复
http://msdn.microsoft.com/zh-cn/library/t2yzs44b(v=VS.80).aspx
在公共语言运行库 (CLR) 中,不安全代码是指无法验证的代码。C# 中的不安全代码不一定是危险的,只是其安全性无法由 CLR 进行验证的代码。因此,CLR 只对在完全受信任的程序集中的不安全代码执行操作。如果使用不安全代码,由您负责确保您的代码不会引起安全风险或指针错误。
http://msdn.microsoft.com/zh-cn/library/chfa2zb8(VS.80).aspx
若要编译不安全代码,必须指定 /unsafe 编译器选项。无法通过公共语言运行库验证不安全代码。
编译器选项全解-
CSC
.exe/?
### 编译器选项全解-
CSC
.exe/?详解 在C#编程中,`
CSC
.exe`是一个重要的工具,用于将C#源代码编译成.NET Framework或.NET Core可执行文件或库。通过命令行参数,`
CSC
.exe`提供了丰富的选项来控制编译过程的不同方面...
csc
命令帮助
###
csc
命令详解 #### 概述 `
csc
` 是 Microsoft .NET Framework 提供的一个命令行工具,用于编译 C# 源代码到中间语言(IL)或本机机器代码。它允许开发者在没有集成开发环境 (IDE) 的情况下进行编译操作,非常适合...
csc
选项命令列表
csc
/
unsafe
+ Program.cs ``` #### @ 此选项用于指定一个包含编译命令行参数的文件。 例如: ```bash
csc
@options.txt Program.cs ``` #### /help 显示帮助信息。 例如: ```bash
csc
/help ``` #### /nologo ...
MessageBox3.cs
// 编译命令:
csc
/
unsafe
UnSafe
Swap.cs using System; class Program { public static void Main() { int a = 2; int b = 9; Console.WriteLine("交换前:a = {0}, b = {1}", a, b); // 不安全语句 ...
RunUO-2.4:RunUO 2.4源代码
PS C:\ runuo> C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \
csc
/ optimize /
unsafe
/ t:exe /out:RunUO.exe / d:Framework_4_0 /win32icon:Server\runuo.ico / recurse :服务器\ *。...
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章