int main(){
int arr[1025][1025]={0,};
int d[1025][1025]={0,};
...
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
d[i][j]=10 // 상수대입
d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+arr[i][j]; // dp연산
}
}
...
}
main함수에서 arr배열과 d배열을 모두 1025*1025*sizeof(int)의 크기로 선언을 한 뒤
두 배열에 모두 값을 할당할 때,
d[i][j]=10과 같이 상수를 대입했을 때에는 오류가 없었지만
d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+arr[i][j]; 와 같이 dp연산을 했을 때에는 segmentation fault가 발생하였다.
d배열을 전역변수에 선언하고 dp연산을 했을 때에는 오류가 발생하지 않는것으로 보아서
이 상황에서 오류가 발생한 원인은 매우 큰 두개의 지역변수로 인해서 스택메모리가 초과하여 발생한 오류로 보인다.
앞으로는 매우 큰 배열변수를 선언할 때에는 전역변수에 선언하는게 나을 것 같다.
'프로그래밍 > 나의 디버깅 노트' 카테고리의 다른 글
[ps][c++] cin을 사용하다가 scanf("%1d")를 사용해야 할 때 (0) | 2021.05.04 |
---|---|
[ps][c++] test-case마다 vector을 초기화 하는 방법 (0) | 2021.05.02 |
[C++] 배열을 초기화할 때 할 수 있는 실수 (0) | 2021.03.12 |
[Visual Studio] 파일 소스를 열 수 없습니다. 오류 해결하기 (1) | 2020.04.19 |
[Udemy] 동영상 스트림 속도 , 버퍼링 문제 개선 (0) | 2020.04.02 |