枣庄软件开发 青岛软件开发
在线客服1069706080
现在的位置:首页 > 软件开发技术 > 文章详情

类型安全之类型安全性

学术研究用途的玩具语言,常会提出类型安全方面的需求。另一方面,许多语言以人工方式所产生的类型安全,证实经常需要上千次的检查。不过,某些语言,如标准ML,其严格定义了语义,且 Java 也已提供类型安全[来源请求]。其它语言如 Haskell 也被认为是类型安全。暂且不理会语言定义的性质,在执行时期发生的某些错误,应归于实作时的缺陷,或是用了其它语言撰写的程式库;这种错误可能使给定的实作,在某些情况下的类型不再安全。

类型安全语言的内存管理

要实现完善的类型安全语言,它至少需要垃圾回收或增加内存配置和解配置的限制(本节主要针对前者)。更明确地说,不允许悬置指标横跨不同结构类型的存在。这有一技术上的原因:假定类型语言(如Pascal要求分配的内存必须显式释放)。如果存在一个仍旧指向之前的内存位址的悬置指标,新的数据结构可能会分配到同一空间。例如,如果初始化一个指向整数区域数据结构的指标,但新物件的指标区域却分配在整数的地方,然后指标区域可借由改变整数区域的值简单改变成任可东西(经由间接引用悬置指标)。因为当指标改变时,尚未指定将会发生什么,所以这个语言就不是类型安全的。大部分类型安全的语言满足使用垃圾回收实现内存的管理。

在允许指标算术的语言中,实作垃圾回收器是最好的,所以在类型不安全的语言或类型安全可能失效的语言中,如此实作回收器的程式库是最好的。C 和 C++ 经常使用。

类型安全与强类型

在各种强类型的定义中,其往往成为类型安全的同义词;然而,类型安全与动态类型并不互相排斥。也可将动态类型视为非常宽松的静态类型语言,而且所有语法正确的程式皆具备良好类型;只要它的动态语义学能够保证绝不会有程式“搞错”,它就可以满足上述定义,且可称为类型安全。


----枣庄软件公司----

想要了解更多详情欢迎来电咨询18678812288,或登陆网址www.zzydkj.net。联系人:王经理。