我有以下功能,將對插入到STL地圖。在插入前是否需要使用新分配內存?在插入C++ STL映射之前,是否需要使用new分配內存?
char* foo(char* lnumber)
{
char* sData = 「A,B,C」;
Char delim[] = 「,」;
typedef std::map<std::string, std::string> TStrStrMap;
typedef std::pair<std::string, std::string> TStrStrPair;
TStrStrMap tMap;
if(strstr(sData,delim) != 0)
{
tok = strtok(sData, delim);
while((tok != NULL))
{
int bytes = strlen(tok)+1;
char* ll = new char[bytes];
memset(ll,0,bytes);
strcpy(ll,tok);
ll[bytes] = '\0';
int bytes1 = strlen("yes")+1;
char* ll1 = new char[bytes1];
memset(ll1,0,bytes1);
strcpy(ll1,」yes」);
ll1[bytes1] = '\0';
tMap.insert(TStrStrPair(ll,ll1));
tok = strtok(NULL, delim);
}
}
std::string strValue = tMap[lnumber];
return(strdup(strValue.c_str()));
}
在插入之前,不需要新建內存。 STL將分配內存並將對象複製到容器中。 – billz
恐怕,這些代碼中的大部分都沒什麼意義。爲什麼不寫沒有任何指針或「新」的真正的C++? –
也許你應該改變你的問題,問如何正確地做到這一點。 – Jason