C#(不安全)指针和C++(原始)指针都具有以下特征:
从这个意义上说,无论有什么细微差别(如语法,固定等),C#指针和C++指针几乎都是相同的编程概念.因此,它们几乎同样适用于静态分析,因此它们同样安全或不安全.因此,C#显式调用此构造的事实unsafe
并不能使等效的C++构造"安全".相反,使用"不安全"代码的能力在C++中"永远在线".
例如,考虑使用超出范围的索引尝试访问数组的情况:
std::array
您将在使用时获得异常,array::at
并且在使用索引器语法时将调用未定义的行为.粗略地说(这是一个非常粗略的近似),C#unsafe
指针与 C++ 指针是同一类东西。
对于这两种情况,程序员有更多的责任来确保正确,而对于普通的 C#,如果出错,最糟糕的情况就是抛出异常。提供这些保证的运行时检查保证了成本性能,但如果您关闭它们 - 您就得靠自己了。
归档时间: |
|
查看次数: |
1380 次 |
最近记录: |