• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

동적 할당 구현 방식 질문 있습니다.

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차원 배열들이 메모리상에 인접하게 할당된다는 보장이 없기 때문에, 오류가 났다
라고 생각하였습니다.
제가 생각한 원인이 맞는지 여쭤보고 싶습니다.

답변 1

답변을 작성해보세요.

0

안녕하세요^^

저도 정확히 모르지만 같은 생각입니다. 연속적으로 잡히지 않아서 포인터로 했을 때 오류가 나지 않나 생각됩니다.