社区
C#
帖子详情
csc 的 /unsafe 到底做了什么?
aimeast
2010-04-04 09:52:07
csc 加上 /unsafe 选项就可以使用非安全代码了。
为什么不加这个选项就不可以使用非安全代码?
好像加了 /unsafe 之后,IL代码没有什么变化。
加了这个参数,编译器在生成的二进制文件里到底做了什么?CLR会有什么特殊机制?
是特殊的内存管理,还是别的?还是什么都没做?
请高手来解答!
...全文
150
5
打赏
收藏
csc 的 /unsafe 到底做了什么?
csc 加上 /unsafe 选项就可以使用非安全代码了。 为什么不加这个选项就不可以使用非安全代码? 好像加了 /unsafe 之后,IL代码没有什么变化。 加了这个参数,编译器在生成的二进制文件里到底做了什么?CLR会有什么特殊机制? 是特殊的内存管理,还是别的?还是什么都没做? 请高手来解答!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 编译器选项。无法通过公共语言运行库验证不安全代码。
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 :服务器\ *。...
runuo-ec:自动从code.google.comprunuo-ec导出
PS C:\ runuo> C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \
csc
/ optimize /
unsafe
/ t:exe /out:RunUO.exe /win32icon:Server\runuo.ico / recurse:Server \ * 。CS 典型Linux构建(MONO) ...
SpaceRunner:使用此工具可以编译将执行任意PowerShell代码的C#程序,而无需通过使用运行空间来启动PowerShell进程。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
csc
.exe /
unsafe
/platform:x64 /preferreduilang:en-US /filealign:512 /out:spacerunner.exe /target:exe spacerunner.cs 用法 使用以下参数执行二进制文件: ...
C#微软培训资料
<<page 1>> page begin==================== 目 ...1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章