[C++] 클래스 선언에서..
class item_set{
private:
int compo[200];
public:
item_set(){}
void setCompo(int value, int idx){
compo[idx] = value;
}
int getCompo(int idx){ return compo[idx];}
};
class LC{
private:
item_set itemset[1000];
int count[1000];
int size;
public:
LC(){
size = 0;
}
void setItem(int i, int cnt, int idx){
itemset[cnt].setCompo(i,idx);
}
int getItem(int cnt, int idx){ return itemset[cnt].getCompo(idx);}
void setCount(int i, int cnt){ count[cnt] = i;}
int getCount(int cnt){ return count[cnt];}
void setSize(int i){ size = i;}
int getSize(){ return size;}
};
이라고 하고
LC L[1000]; 이라고 선언하면
segmentation fault가 뜹니다..
item_set 클래스에서 배열 선언하는게 잘못된 듯 한데 못고치겠네요.. ㅠ
도와주세요ㅠ
배열크기가 너무
배열크기가 너무 크면 할당이 안되어서 에러가 나는 경우가 있습니다.
LC가 천개에 LC 하나당 천개의 item_set, item_set 하나당 200개의 int이니까 이것만으로도 총 2억개네요.
한번 동적할당을 이용하거나 배열이 아닌 std::vector나 std::list 등을 이용해보세요.
int 2억개. 32bit OS라고
int 2억개. 32bit OS라고 치면 8억 바이트 = 762Mbyte
이정도로 큰 공간을 기본 스택 크기로 할당해주는 컴파일러/OS는 없을 것입니다(...).
저 부분을 전역 변수로 선언한 것이거나 main에서 선언한 거라면 컴파일러 옵션을 조절하거나 윗 분말대로 동적할당을 해보세요.
댓글 달기