在我的課堂我有一個成員這會損壞堆棧使用本地變量?
std::vector<std::pair<std::string, std::string> > mEnvironment;
現在我寫它加載該向量與過程環境鍵/值對的函數。我不需要訪問成員,所以我不使用地圖,並且認爲矢量會更好,因爲我只是遍歷它。
void Environment::setEnvironment(char const *oEnvironment[])
{
mEnvironment.clear();
if(oEnvironment == NULL)
return;
std::string name;
std::string value;
std::pair<std::string, std::string> entry;
for(const char **envp = oEnvironment; *envp != NULL; envp++)
{
const char *env = *envp;
name.clear();
value.clear();
for(env = *envp; *env != 0; env++)
{
if(*env == '=')
{
env++;
break;
}
name += *env;
}
value = env;
entry = std::make_pair(name, value);
mEnvironment.push_back(entry);
}
}
由於變量entry
是本地的,我不知道用push_back(entry)
時會發生什麼功能超出範圍。將我放入向量中的對象繼續存在,還是會調用析構函數?或者更糟的是,它會被簡單地覆蓋,還是我必須在循環中創建一個新的對象?
感謝。我不確定這些類真的做了什麼,但我想,如果他們不創建副本,這是沒有意義的。雖然想確定。 :) – Devolus