2014-04-30 5 views
1

C++에서 struct에 관한 질문이 있습니다. 사실, 내 코드는 내가 그것을 컴파일 할 때이구조체 메모리 제한

struct SegmentTree { 
    int segmentTree[2500000]; 

    some functions... 
} 

같은 것이었다 즉시 나에게 세그먼트 오류를주고 있었다, 그러나 나는 클래스와 같은 일을하려고 할 때, 모든 것이 잘 작동. 그래서, 내 질문 : 거기에 구조체에서 사용할 수있는 몇 가지 제한된 수의 변수, 또는 다른, 문제가 무엇입니까?

+1

그게 유일한 차이점은 아닙니다. 어쩌면 한 번 동적으로 할당하고, 다른 한 번은 자동 변수였습니다. –

답변

1

이렇게 선언 된 배열은 스택에 할당됩니다 (함수의 지역 변수와 동일). 정적 배열의 요소 수 제한은 스택 크기 (컴파일러 옵션을 사용하여 수정할 수 있음)에 의해 정의됩니다. 대신 동적으로 할당 된 배열 (또는 더 나은 std::vector)을 사용하여 힙을 대신 사용할 것을 고려하십시오.