0

コードスニペットスタックのメモリまたはJavaのヒープにメモリが割り当てられていますか?

Scanner sc=new Scanner(System.in); 
    System.out.println("enter size of array"); 
    int size=sc.nextInt(); 
    int[] arr=new int[size];//Is the array arr allocated on heap? 

アレイ用の動的メモリ割り当てと呼ばれるものがありますか?

+0

*配列「Array」または「ArrayList」の動的メモリ割り当て? – Ravi

+0

https://stackoverflow.com/questions/14837185/how-can-we-dynamically-allocate-and-grow-an-array – nullpointer

+6

ヒープです。 「新しい」という言葉が見えるときはいつも、何かがヒープに乗っています。 –

答えて

0

Javaオブジェクトは、ヒープと呼ばれる領域にあります。 新しく作成されたオブジェクトは、edenと呼ばれるヒープ領域に最初に割り当てられます。

スタックは、現在のメソッドのスコープのオブジェクトとプリミティブ型の値への参照が含まれています

  • 我々はそれが作成され、スタックメモリに保存されている プリミティブローカル変数を作成しています。
  • オブジェクトを作成するときには、ヒープメモリに作成され、スタック のメモリに参照が格納されています。

プリミティブ型の配列を作成するとき、それはヒープメモリで作成され、スタックメモリには参照が格納されます。

0
int[] arr=new int[size];//Is the array arr allocated on heap? 

「配列arr」はありません。

配列がオブジェクトであり、すべてのJavaオブジェクトがヒープ上に存在するため、ヒープ上にある配列があります。ローカルにあるため、スタックに常駐するarrという参照があります変数。

関連する問題