게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
Java 동적할당? 정적할당? 메모리 관련 질문드립니다
게시물ID : programmer_18845짧은주소 복사하기
작성자 : 일찍일어나자
추천 : 0
조회수 : 1293회
댓글수 : 1개
등록시간 : 2016/10/28 23:03:40
옵션
  • 베스트금지
  • 베오베금지
  • 본인삭제금지
고수님들 Java 질문 드립니다~

아래 처럼 visited, cost 배열을.. 선언은 전역 변수로 선언하고,
동적할당/정적할당 받는 경우에 관하여 질문 드립니다.

(조건 ; 1 <= N <= 1000)


Q1. 정적할당을 받는 경우
아래 주석처리 한것처럼 1001짜리 크기 배열의 Static 변수를 선언하면
1001의 크기의 배열이 JVM의 Method 영역에 메모리가 잡히는것이 맞나요?

Q2. 동적할당을 받는 경우
전역변수는 Method Area에 메모리가 잡히니까 visited, cost는 JVM의 method Area에 단 한번 메모리가 올라가고
main 함수에서 1001 배열의 크기를 선언하면.. 이 배열의 크기는 JVM의 어느 메모리 영역에 올라가나요?

Q3. 문제는 아래 코드에서 주석처리 한 것처럼 정적할당을 받으면 런타임 에러가 안납니다
동적할당을 받으면 런타임 에러가 납니다. 문제가 무엇일까요?

런타임 에러의 내용은 알 수 없는 상황입니다.


public class Main {
 
    static int T = 0; // TC 개수
   
    //static boolean[] visited = new boolean[1001];
    //static int[] cost = new int[1001];
    static boolean[] visited;
    static int[] cost;
 
    public static void main(String[] args) throws IOException {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        T = Integer.parseInt(br.readLine());

        for (int t = 0; t < T; t++) {
 
            StringTokenizer st = new StringTokenizer(br.readLine());
            N = Integer.parseInt(st.nextToken());

 

            visited = new boolean[N + 1];
            cost = new int[N + 1];

...
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호