Programming languages 用于区分可以/不能引用未定义内存的语言的术语

Programming languages 用于区分可以/不能引用未定义内存的语言的术语,programming-languages,computer-science,terminology,Programming Languages,Computer Science,Terminology,我总是把语言分为两种类型。。。让你指的是未定义的未初始化、释放的内存,例如C、C++、COBOL、汇编等,以及java、Perl、C和BASIC等不能使用的内存。有计算机科学术语来描述这种区别吗?当我们讨论这个问题时,我称之为未定义内存的东西是否有一个计算机科学术语?你在考虑堆吗?你能定义它是指什么吗?如果你只是说你可以在没有警告或错误的情况下获取垃圾内存,那么我不认为这有什么形式上的区别。我能想到的可能相关的区别是高水平和低水平。从Java和C这样的汇编语言进一步抽象出的高级语言,由于明显的原

我总是把语言分为两种类型。。。让你指的是未定义的未初始化、释放的内存,例如C、C++、COBOL、汇编等,以及java、Perl、C和BASIC等不能使用的内存。有计算机科学术语来描述这种区别吗?当我们讨论这个问题时,我称之为未定义内存的东西是否有一个计算机科学术语?

你在考虑堆吗?

你能定义它是指什么吗?如果你只是说你可以在没有警告或错误的情况下获取垃圾内存,那么我不认为这有什么形式上的区别。我能想到的可能相关的区别是高水平和低水平。从Java和C这样的汇编语言进一步抽象出的高级语言,由于明显的原因,通常会抽象掉开始引用垃圾的能力。接近汇编语言的较低级别不只是为了让开发人员可以使用它,这类似于内存管理。未定义的内存通常被称为未使用、垃圾或释放的内存。

指针安全

我很抱歉不能将原作者归为作者。我知道我看到Erik Meijer提到并定义了它

指针安全性或内存安全性是一个程序或特定语言或其他约束中的所有程序的属性,其中程序不能寻址它明确分配和拥有的内存以外的内存,或通过中介(如操作系统)寻址

类型安全性也是这样一个属性,但通常更严格——如果某个属性是类型安全的,那么它通常也是指针安全的。在该属性中,内存被称为具有类型的对象,并且程序除非通过对该类型的操作,否则不会操纵该内存。我暂时不讨论类型的各种相互冲突的定义,因为这也是一个大问题

这些属性通常适用,并且可以应用于各种内存管理策略—动态堆分配、竞技场分配器、堆栈和“静态”或“全局”存储。这不仅仅是堆


Wikipedia on and.

你知道,我在讨论这些话题时总是用这个词。我考虑C/C++内存不安全语言。我不知道这是否是公认的术语,所以我有兴趣看到其他答案

至于未定义记忆的术语,我认为该术语是其他两个术语的组合:

未分配内存:未被程序使用的内存


未初始化内存:内存已分配,但未被程序赋予有意义的值。

将这些词放入线程中是很好的工作,但是C、C++、java和C在内存方面都做了类似的事情,只是java和C抽象了它远离用户的管理。但是我想把未初始化的内存添加到这个分类中。。。它是分配的,但只是没有初始化。你确定指针安全性指的是统一的局部变量问题吗?我没有特别提到未初始化的局部变量,但指针安全语言必须解决未初始化内存的使用问题,当该内存被解释为指针时。好的,但我要寻找的是确保根本不可能引用未初始化的内存,不管它是否是指针