2013-05-13 4 views
1

할당되었지만 초기화되지 않은 문제가 있습니다. 여기은 할당되었지만 초기화되지 않았습니다.

코드의 일부이다 : 코드의 라인 (3)에 웰

void test2(vector<string> names, int num) // just for test 
{ 
    const char **tmp = new const char *[num]; // issue happends here. 
    for(int i = 0; i < num; i ++) 
     tmp[i] = names[i].c_str(); // is it not inialization??? 
    //call another function using tmp 
    delete []tmp; 
} 

나는 문제점을 가지고 : 할당 "TMP"= "새로운 숯 CONST * NUM]를"인 할당되었지만 초기화되지 않았습니다.

나는 2-d 어레이 할당 및 초기화와 혼동을 느낀다고 생각합니다. 나는 tmp가 const char * 배열이라고 생각하고 vertor를 const char **로 변환하려고한다.

코드에서 새 코드를 사용하고 여기에서 삭제하는 것이 옳은가요?

만약 2d 배열이 int * 이라면, 그 값에 값을 할당하고자한다면, 새로운 int [num]을 필요로하고 for 루프를 새로운 int []; 내 사건은 어때?

누군가이 코드 조각을 도와 줄 수 있습니까?

+1

상수는 일정합니다. –

+3

당신이 가지고있는 문제는 무엇입니까? 컴파일러가 불평하고 있습니까? 그렇다면 메시지를 게시하십시오. 코드가 기대하는대로 작동하지 않습니까? 코드를 어떻게 연습하고 있는지, 실제로 무엇을하고 싶은지 설명하십시오. –

+1

질문에있는 코드가 문제가있는 코드와 실제로 같지는 않을 것 같습니다. –

답변

1

데이터 초기화 후 데이터를 할당하기 때문에이 상황에서는 const를 사용하지 마십시오.

+0

나는 벡터를 사용하는 것이 좋을 것이라고 생각한다; – user1672690

+0

const char ** tmp = 새로운 const char * [num]; 여기서 은 단지 할당이며, 메모리를 할당하는 한 초기화해야합니다. 이고 for 루프에서 초기화가 아니라 할당입니다. 이 경우 const char 대신 벡터 를 사용하는 것이 좋습니다. ** – user1672690

관련 문제