-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
동적 할당 구현 방식 질문 있습니다.
21.08.03 01:11 작성 조회수 242
0
안녕하세요 선생님.
구현 방식에 있어 질문이 있습니다.
저의 경우는 전체 땅을 저장할 2차원 배열을 이런식으로 동적할당 하여 사용하였습니다.
int **arr = (int**)malloc(height*sizeof(int*));
for(i=0; i<width; i++){
arr[i] = (int*)malloc(width*sizeof(int));
}
//height : 전체 땅의 높이 , width : 전체 땅의 너비
이후 arr[i][j]와 같은 인덱스 기반 접근이 아니라,
*(arr + i*width + j) 와 같은 포인터 연산으로,
별도의 함수를 정의하여 각 element에 접근하였는데요,
그결과 매번 오류가 났습니다.
제가 생각하는 오류의 원인은,
동적할당이 아니라 기본적인 2차원 배열로 선언하면
실제로는 메모리에 거대한 1차원 배열로 할당되기 때문에
위와같은 포인터 연산으로도 각 element에 접근할 수 있지만,
제가 구현한 방식과 같이 , 1차원 배열들을 각각 동적할당하여
하나의 2차원 배열을 구성한 경우,
해당 1차원 배열들이 메모리상에 인접하게 할당된다는 보장이 없기 때문에, 오류가 났다
라고 생각하였습니다.
제가 생각한 원인이 맞는지 여쭤보고 싶습니다.
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
50. 영지 (territory) 선택 (small : 2차원 배열 브루트포스)
강의실 바로가기
답변을 작성해보세요.
0
답변 1