我正在嘗試學習 c 并想撰寫一個簡單的程式來探索向量和指標的使用。當我嘗試運行一個使用此函式的簡單程式時,會發生分段錯誤。當我改變
std::vector<string> *data;
到
std::vector<string> data;
并將“->push_back()”更改為“.push_back()”,它運行良好。
int simple_tokenizer(string s)
{
std::stringstream ss(s);
std::vector<string> *data;
string word;
//char delimiter = ',';
while(getline(ss,word, ',')) {
//cout << "charsplit" << word << endl;
data->push_back(word);
}
return 0;//data;
}
uj5u.com熱心網友回復:
您的代碼正在生成分段錯誤,因為您沒有為指標分配記憶體。
int simple_tokenizer(string s)
{
std::stringstream ss(s);
std::vector<string> *data = new std::vector<string>();
string word;
//char delimiter = ',';
while(getline(ss,word, ',')) {
//cout << "charsplit" << word << endl;
data->push_back(word);
}
return 0;//data;
}
請注意delete,一旦使用完它就需要它,但實際上std::vector動態分配沒有意義,它將分配其中所需的所有內容,并且您不必冒記憶體泄漏的風險,因為您不必追逐它delete隨處可見。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/342874.html
