프로그래밍

 3198, 1/160 회원가입  로그인  
   capt_0669
   [C언어/JAVA] 배열 선언할때 크기가요....

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3203 [복사]


배열을 선언할때
[]안에 크기를 쓰잖아요

그런데 []안에 5000같이 큰 숫자가 들어갔다면
프로그램이 끝나면 그 5000의 크기가 뭐 int형이면 4*5000..인가요?
그 키기가 컴퓨터에 계속 저장되어있나요?

아니면 5000의 크기가 없어지나요??

만약 계속 쌓인다면 없애는 방법 있나요??

  Hit : 4862     Date : 2011/11/09 07:05



    
prosthetics ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
프로그램이 사용하는 메모리 공간은 Stack, Heap, Static으로 분류가 됩니다.

전역변수의 경우 Static영역에 저장되며
변수 선언서 부터 생성되어 프로그램 종료시 사라집니다.

{...} 이 괄호 안에서 선언한 변수는 Stack에 저장되어, 괄호가 닫힐떄 ( '}' ) 사라집니다.

<C>
동적 할당인 malloc류의 함수를 이용하면 Heap영역에 저장되는데,
이것은 free로 해제를 해주지 않으면 사라지지 않습니다.

<Java>
new 키워드를 통해 생성하는 객체, 배열들은 모두 Heap 영역에 저장됩니다.
Java는 가비지 콜렉션 기능이 있으므로 free가 필요없습니다.
가비지 콜렉션 기능은 사용하지 않는 메모리를 자동으로 수거해주는 기능입니다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

따라서 배열을 선언했을 경우 컴퓨터에 계속 저장되어 있는 경우도, 저장 되지 않는 경우도 발생하며
계속 저장하지 않도록 없애는 방법도 있습니다.

자세한 내용은
"프로그래밍 언어개념" 이라는 책을 찾아 보시면 "변수의 수명"이라는 파트가 있습니다.
인터넷을 통해 찾아보셔도 됩니다.
2011/11/09  
capt_0669 아~~그래서
String a[] = new String[5000];
을 했더라 해도
public static void main(String args[])
{
}
가 이렇게 닫히면서 사라지는군요~~~

감사합니다~~
맘이 한편 편해 졌어요~^^
2011/11/11