코딩할때 가장 기본이 되는 유용한 기능중 한가지가 바로 배열이라고 생각합니다.
배열은 동적 메모리 할당(dynamic memory allocation)과 정적 할당(static memory allocation)으로 선언할수있습니다.
또한 정적할당에서도 메모리가 할당이 되는곳이 선언방법에 따라 힙(heap) 영역과 스택(stack) 영역으로 나뉠수 있습니다.
간단히 이야기 해서 스택은 용량이 1메가바이트 (1MB = 1,000 KB = 1000,000 byte) 정도로 한정이 되어있다고 합니다.
그래서 지역번수를 선언할때 메모리 할당, 즉 배열 선언을 할때 정적배열의 크기가 너무 커버리면 스택 영역에 있어야 할 지역변수의 공간이 이웃한 다른 영역을 침범하게 되서 메모리 접근 오류가 발생할 수 있습니다.
결론은 간단히 이야기 해서 전역으로 정적 배열을 선언해버리면, 데이터 영역, 즉 힙 영역으로 메모리가 할당이 되어서 오류가 뜨지않고 사용을 할 수 있습니다.
오늘 작업하다가 지역함수 내에서 정적 메모리 할당을 했는데, 계속 오류가 뜨길래 찾아보고 찾아보다 그 해결책을 찾은거라 혹시나 해서 다른분들께도 도움이 되지않을까 해서 글 적어봅니다.
typedef double_double3_[3];
_double3_arrA[640*480];
_double3_arrB[640*480];
_double3_arrC[512*424];
위와 같이 정적 배열을 생성했는데, 계속 오류가 떠서, 전역으로 옮겨 줬더니 문제 없이 작동 되네요.
조금 더 자세한, 그리고 디테일한 설명을 원하시면 아래 참조 블로그를 들어가셔서 보시면 더욱 더 이해하시기 편하리라 생각합니다.
참조:
http://egloos.zum.com/slaveofcod/v/320270
http://inhack.org/wordpress/?p=2932
'[ Topics ] > C/C++' 카테고리의 다른 글
윈도우 화면의 배율과 OpenGL 커서 점의 상관관계, 그리고 모니터 및 해상도 정보 (2) | 2016.07.20 |
---|---|
ASSERT 매크로 사용법 (참고) (0) | 2015.07.20 |
STL의 map 과 multimap의 간단한 설명 및 실사용 예제 (0) | 2014.07.10 |
문자타입간의 데이터 복사방법(wchar_t, char*, LPCTSTR) (0) | 2014.04.08 |
시스템 타이머를 통해 FPS 구하기 (6) | 2013.12.25 |