|
컴파일러 메모리는 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가 나옵니다.
:
: 컴퓨터 상에서도 배열의 크기를 많이 제한 받나요?..
:
: 어찌해야 할지를 모르겠습니다.
:
: 전 그 크기를 꼭 써야만 하는데요..
:
: 제가 다른 실수를 범하고 있는건 아닌지 모르겠네요..
:
: 혹시 아시는 분 있으시면 도움을 주시기 바랍니다.
|