C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47409] Re:메모리를 넘었나봐요..
유영인 Cuperido [cuperido] 1199 읽음    2006-12-14 20:48
컴파일러 메모리는 3가지 타입으로 생성합니다.

Data Segment, Stack, Heap 이렇게 구분하는데,
Data Segment, Stack 은 제약이 컴파일 시점에서 제약이 있지만,
Heap은 2GB 까지 가능하므로 거의 제약이 없다고 봐도 무방합니다.

int VALUE1[10];
main() {
  int VALUE2[10];
  int *VALUE3;

  VALUE3 = new int[10];
  delete [] VALUE3;
}

이런식으로 VALUE1 ~ 3까지 있는데, 다음과 같이 메모리 배정이 이루어집니다.

VALUE1 - 전역변수이므로 Data Segment 로 들어갑니다.
VALUE2 - 지역 고정 변수이므로 Stack 으로 들어갑니다. (Static으로 설정하면 Data Segment로 갑니다)
VALUE3 - 동적 생성이므로 Heap 으로 할당됩니다.

따라서, 큰 배열을 위해서는 Heap을 사용하시는 것이 좋고,
Heap도 메모리 단편화가 이루어질 수 있으므로, 주기적으로 빠른 속도로
넣었다 뺐다 하는 구성을 해야한다면 메모리풀을 이용해야 합니다.


cuperido


왈가닥 공주 님이 쓰신 글 :
: 배열이 무리하게 컸는지 자꾸만
:
:  out of memory 라는 Link Error가 나옵니다.
:
: 컴퓨터 상에서도 배열의 크기를 많이 제한 받나요?..
:
: 어찌해야 할지를 모르겠습니다.
:
: 전 그 크기를 꼭 써야만 하는데요..
:
: 제가 다른 실수를 범하고 있는건 아닌지 모르겠네요..
:
: 혹시 아시는 분 있으시면 도움을 주시기 바랍니다.

+ -

관련 글 리스트
47408 메모리를 넘었나봐요.. 왈가닥 공주 967 2006/12/14
47410     Re:메모리를 넘었나봐요.. 라스코니 1077 2006/12/14
47409     Re:메모리를 넘었나봐요.. 유영인 Cuperido 1199 2006/12/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.