다음과 같이 확인합니까?C++ 클래스에 대한 포인터로 malloc 및 sizeof 사용
int n=5;
map<string,int> * maps = (map<string,int> *)malloc(n*sizeof(map<string,int>));
for (int i=0; i<n; i++) {
maps[i] = map<string,int>();
char * i_str = (char *)malloc(10);
sprintf(i_str,"%d",i);
char * key = (char *)malloc(100);
strcpy(key,"key");
strcat(key,i_str);
(maps[i])[string(key)] = i*i;
}
저는 사람들이 C++에서 malloc 대신 새로운 것을 사용한다고 말합니다. 그러나 내가 이렇게하면, 어떤 문제가 발생할 수 있다면 어떨까요?
편집 : 코드가 정상적으로 컴파일되고 정상적으로 실행됩니다 (g ++ 4.6.3). 질문이 보류되어있는 이유를 모르지만 기술적으로 올바른지 알고 싶습니다 (스타일에 신경 쓰지 않습니다). 잘 모르겠어요 한 가지 라인
maps[i] = map<string,int>();
구문이 올바른지, 그리고 한 사람이 제안 정말 예상치 못한 동작이 발생할 않습니다 여부입니다.
누군가는 아직 내가하고있는 일이 정의되지 않았 음을 보여주는 C++ 사양에 대한 참조를 제공하지 않았습니다. 그래서이 질문은 아직 답을 얻지 못했습니다.
이렇게하면 안됩니다. – chris
아니, 전혀 괜찮지 않아. –
Y U DO DIS ????? –