2010-06-23 6 views
2

동적으로 할당 된 객체의 2 차원 배열이 필요합니다.개체의 2 차원 배열을 초기화하는 가장 적합한 방법은 무엇입니까?

int server_session::createSession() 
{ 
    int ret = -1; 
    // looks for the next available position on the array 
    for (int i = 0; i <= MAX_SESSION; i++) 
    { 
    // if there's an available position, instantiates an object 
    if (server_session::Pglvcl_sess[i] == NULL) 
    { 
     // instantiates object 
     server_session::Pglvcl_sess[i] = new server_session(); 
     ret = i; 
     break; 
    } 
    } 
    return ret; 
} 

내가 server_session::Pglvcl_sess 변수를 malloc해야 :

server_session **server_session::Pglvcl_sess; 

동적 객체의 배열의 배열을 채울 수있는 방법이있다 :

나는 다음과 같이 객체의 포인터에 고정 포인터를 선언?

초기화하는 올바른 방법은 무엇입니까?

EDIT : 어플리케이션 시작시에이 방법을 실행

이 OK인가?

void server_session::initializeSessions() 
{ 
    server_session::Pglvcl_sess = (server_session * *) malloc(MAX_SESSION * sizeof(server_session)); 
    for (int i = 0; i <= MAX_SESSION; i++) 
    { 
    if (server_session::Pglvcl_sess[i] != NULL) 
    { 
     server_session::Pglvcl_sess[i] = NULL; 
    } 
    } 
} 

답변

3

어떤 이유

Vector<Vector<server_session> > 

를 사용하고 당신을위한 동적 할당 및 관리를 할 수 있도록하지?

+0

@Michael Dorgan, 나는 순수한 c로 컴파일 된 라이브러리에 문제가있었습니다. 나는이 lib에서 함수를 호출하는 Vector를 사용하여 세그먼테이션 결함을 가졌습니다. 그것이 관련이 있는지 모르겠지만 포인터를 사용하여 포인터가 작동 ... – pcent

1

벡터 대신 실제로 배열이 필요하면 std :: tr1 :: array (또는 std :: array 또는 boost :: array, 모두 동일)를 사용하십시오.

관련 문제