变量什么时候分配内存
终极管理员 知识笔记 97阅读
变量是否被自动分配内存?
答:如果变量是指针类型的,则不会被自动分配内存。 如果它是全局的,则其初始值是nil,表示还没有指向;如果是局部的,尽管没有被分配内存,但是会随机地指向一个地址,因此值不是nil。 为了验证上述内容,我需要举几个例子。
变量的内存分配形式有哪些?
答: 变量的内存分配形式有两种:自动和人工。 所谓自动分配,是一个变量被声明后即被分配内存;而人工分配是指变量被声明后必须用代码显式地分配内存。 一般地,无论是全局变量还是局部变量,如果它是非指针类型的,则声明后被自动分配内存。
什么是动态分配内存?
答:应用程序开始运行时,所有全局变量的内存被分配到全局变量区,应用程序结束时被释放;被分配在栈上的变量内存可被栈管理器自动释放;堆上的变量内存必须人工释放。 一般而言,对于指针类变量,则需要程序员使用一些代码来完成内存分配,通常,这样的分配方式也被称作动态分配。
变量被自动释放内存的类型有哪些?
答:长字符串(AnsiString/String)、宽字符串(WideString)、动态数组(dynamic arrays)和接口(interface)。 这些类型的变量也是被自动释放内存的。