소연의_개발일지
article thumbnail

 

❓원인:

스택 오버플로우 초과 문제일 때 나타나는 오류
예: 함수 내에서 큰 배열(예: char buffer[1000000];)을 선언하면, 스택이 부족할 수 있음.

 

✅ 해결: 


1. 큰 지역 변수는 힙으로 할당: 스택에 큰 배열을 두지 말고 new 또는 malloc을 사용해서 힙에 할당

// 스택 할당 (문제 발생 가능)
void func() {
    char largeArray[1000000];  // 스택 오버플로우 가능
}

// 힙 할당 (안전)
void func() {
    char* largeArray = new char[1000000];  // 힙 메모리 사용
    delete[] largeArray;
}

 

2. 힙 메모리 늘려주기(추천!!)

프로젝트 속성 → 시스템 → 스택 예약 크기 를 늘려준다.

3. 재귀 호출 문제 확인
재귀 함수가 너무 깊이 호출되지 않도록 반복문으로 변경하거나 최대 깊이 제한을 설정

 

나는 2번으로 해결했다. 거의 50메가 할당해버림..ㅋ

 

 

 

 

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!