C不安全代码.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C不安全代码

18. 不安全代码 PAGEREF _Toc113945913 \h 313 18.1 不安全上下文 PAGEREF _Toc113945914 \h 313 18.2 指针类型 PAGEREF _Toc113945915 \h 315 18.3 固定和可移动变量 PAGEREF _Toc113945916 \h 318 18.4 指针转换 PAGEREF _Toc113945917 \h 318 18.5 表达式中的指针 PAGEREF _Toc113945918 \h 319 18.5.1 指针间接寻址 PAGEREF _Toc113945919 \h 320 18.5.2 指针成员访问 PAGEREF _Toc113945920 \h 320 18.5.3 指针元素访问 PAGEREF _Toc113945921 \h 321 18.5.4 address-of 运算符 PAGEREF _Toc113945922 \h 322 18.5.5 指针递增和递减 PAGEREF _Toc113945923 \h 323 18.5.6 指针算术运算 PAGEREF _Toc113945924 \h 323 18.5.7 指针比较 PAGEREF _Toc113945925 \h 324 18.5.8 sizeof 运算符 PAGEREF _Toc113945926 \h 324 18.6 fixed 语句 PAGEREF _Toc113945927 \h 325 18.7 堆栈分配 PAGEREF _Toc113945928 \h 328 18.8 动态内存分配 PAGEREF _Toc113945929 \h 329 不安全代码 如前面几章所定义,核心 C# 语言没有将指针列入它所支持的数据类型,从而与 C 和 C++ 有着显著的区别。作为替代,C# 提供了各种引用类型,并能够创建可由垃圾回收器管理的对象。这种设计结合其他功能,使 C# 成为比 C 或 C++ 安全得多的语言。在核心 C# 语言中,不可能有未初始化的变量、“虚”指针或者超过数组的边界对其进行索引的表达式。这样,以往总是不断地烦扰 C 和 C++ 程序的一系列错误就不会再出现了。 尽管实际上对 C 或 C++ 中的每种指针类型构造,C# 都设置了与之对应的引用类型,但仍然会有一些场合需要访问指针类型。例如,当需要与基础操作系统进行交互、访问内存映射设备,或实现一些以时间为关键的算法时,若没有访问指针的手段,就不可能或者至少很难完成。为了满足这样的需求,C# 提供了编写不安全代码 (unsafe code) 的能力。 在不安全代码中,可以声明和操作指针,可以在指针和整型之间执行转换,还可以获取变量的地址,等等。在某种意义上,编写不安全代码很像在 C# 程序中编写 C 代码。 无论从开发人员还是从用户角度来看,不安全代码事实上都是一种“安全”功能。不安全代码必须用修饰符 unsafe 明确地标记,这样开发人员就不会误用不安全功能,而执行引擎将确保不会在不受信任的环境中执行不安全代码。 不安全上下文 C# 的不安全功能仅用于不安全上下文中。不安全上下文是通过在类型或成员的声明中包含一个 unsafe 修饰符或者通过使用 unsafe-statement 引入的: 类、结构、接口或委托的声明可以包含一个 unsafe 修饰符,在这种情况下,该类型声明的整个文本范围(包括类、结构或接口的体)被认为是不安全上下文。 在字段、方法、属性、事件、索引器、运算符、实例构造函数、析构函数或静态构造函数的声明中,也可以包含一个 unsafe 修饰符,在这种情况下,该成员声明的整个文本范围被认为是不安全上下文。 unsafe-statement 使得可以在 block 内使用不安全上下文。该语句关联的 block 的整个文本范围被认为是不安全上下文。 下面显示了关联的语法扩展。为简洁起见,用省略号 (...) 表示前几章中出现过的产生式。 class-modifier: ... unsafe struct-modifier: ... unsafe interface-modifier: ... unsafe delegate-modifier: ... unsafe field-modifier: ... unsafe method-modifier: ... unsafe property-modifier: ... unsafe event-modifier: ... unsafe indexer-modifier: ... unsafe operator-modifier: ... unsafe constructor-modifier: ...

文档评论(0)

189****1013 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档