huh0918   2년 전

misaligned address 라는 에러가 발생합니다. 구글링을 해도 아직 식견이 부족해서인지 정확히 어떤 에러인지 파악하기가 힘듭니다.

 [1001][1001]크기의 int (arr), long(dp) 배열 두개를 처음에 선언했었는데 segfault가 떴습니다.

스택 용량이 부족한가 싶어서 n을 입력받고 해당하는 크기만큼의 ( [n+1][n+1] ) 배열만 malloc으로 할당했더니 해당 문제는 해결되었습니다.

예제에 나온 케이스는 gcc로 컴파일해서 돌려보았을 때 문제없이 작동하나, 제출해보았더니  misaligned adrress에러가 생깁니다.

현재 추측하는 바로는 다음과 같습니다.

malloc으로 생성한 배열은 일반적인 방식으로 선언한 배열처럼1행쭉~ 2행 쭉 이런식으로 순차적으로 메모리에 정렬되어 있지 않습니다.

[i][j] 크기의 배열이라면, i개의 포인터들이 쭉 정렬되어있고 그 포인터가 각각 [j]크기의 배열의 포인터라고 알고 있습니다.

혹시 이러한 malloc의 2차원 배열 구현 방식에 있어서 문제가 생겨 misaligned address가 발생한 것은 아닌지 의심하고 있습니다.

하지만 이는 어디까지나 제 생각이고,, 어떤 부분에 문제가 있는지 알려주시면 정말 감사하겠습니다 -_-

댓글을 작성하려면 로그인해야 합니다.