저는 현재 포인터가 없어서 매우 큰 구조체> 13MB입니다. 내 문제는 그것을 클래스에 저장하는 방법입니다.BIG (> 13MB) 구조체 용 STL 컨테이너
클래스의 일부인 경우 stackoverflow가 발생합니다. 포인터를 사용하면 클래스를 복사해야 시작할 때까지 문제가 해결됩니다. 그러면 지옥이 시작됩니다. (클래스에는 많은 멤버가 있기 때문에).
STL 벡터 및 배열로 tryed하지만 여전히 stackoverflow 가져옵니다. 스택에 구조체를 넣지 않지만 메모리를 직접 할당하는 STL 컨테이너입니까?
이렇게하면 모든 것이 제대로 완료 될 수 있습니다.
감사합니다.
UPDATE :
예제 코드 :
//HEADER
#include <vector>
struct BigStruct { //This is untouchable or divisible into an array of arrays
char a[1000];
int b[1000][1000];
long c[1000000];
// etc...
};
class Foo
{
std::vector<BigStruct> a; //It has to be here since is related to this instance of the class
public:
Foo();
//All the other funcs and method
// ...
//All the other variables are from STL
// ...
};
//CPP
Foo::Foo(){
a.resize(1);
}
std :: vector는 힙에 할당되므로 스택 오버 플로우가 발생하지 않아야합니다. – Borgleader
스택은 일반적으로 몇 MB 정도이므로 로컬 변수로 선언하면 스택 오버플로가 발생합니다. –
이 15MB 인 경우 스택에서 로컬 변수로 사용할 수있는 일반 클래스로 사용하고 한 곳에서 다른 곳으로 계속 복사하면 ... 실제 디자인 문제가 있습니다. –