C++与Java数组内存的分配
2017-05-22 22:21
204 查看
在 C++中,数组要么在静态存储区创建(静态存储区虽然叫“static”,但存在于RAM里),要么就在栈中创建。
在栈中创建的数组,数组名就代表着一块内存,注意不是指向,并且在其生命期内它在栈中的地址都不会改变。由于是内存块,因此在C++中使用数组是非常危险的,比如未初始
化就使用内存(常规错误),又如程序访问了当前内存块之外的元素,就会造成不可预测的错误。
而在Java中,创建一个数组可以看做创建了一个句柄数组,句柄在栈中,并且被赋予了一个初始值(null),当正式使用时,为句柄分配一个对象,对象存在在堆中分配的一块内
存,如果仍使用为null的句柄,就会在运行期报错。
在栈中创建的数组,数组名就代表着一块内存,注意不是指向,并且在其生命期内它在栈中的地址都不会改变。由于是内存块,因此在C++中使用数组是非常危险的,比如未初始
化就使用内存(常规错误),又如程序访问了当前内存块之外的元素,就会造成不可预测的错误。
而在Java中,创建一个数组可以看做创建了一个句柄数组,句柄在栈中,并且被赋予了一个初始值(null),当正式使用时,为句柄分配一个对象,对象存在在堆中分配的一块内
存,如果仍使用为null的句柄,就会在运行期报错。
相关文章推荐
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”
- Java数组及其内存分配
- Java基础学习9(一维数组及在内存中的分配)
- Java学习之二维数组定义与内存分配详解
- 内存分配详解、指针与数组[C++][内存管理]
- C++内存分配及变长数组的动态分配
- 内存分配详解、指针与数组[C++][内存管理]
- C/C++动态内存分配之用malloc和指针实现动态数组排序
- 内存分配详解、指针与数组[C++][内存管理]
- C++中 关于多维数组在计算机内存中的分配情况
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”(转)
- 从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”
- Java学习之旅基础知识篇:数组及引用类型内存分配
- 内存分配详解、指针与数组[C++][内存管理] --转载于--Gaius Julius Caesar
- Java中数组的存储与内存分配
- Java学习之二维数组定义与内存分配详解