-2
我正在創建命令提示符,並將用戶輸入作爲字符串並使用我創建的解析函數將其轉換爲char **。我看不出任何問題,但在我的提示符下運行一些命令後,我就開始陷入的「損壞的尺寸誤差VS prev_size 0x00c06738。這是我的解析功能。任何幫助,將不勝感激。創建命令提示符時從字符串轉換爲char **的問題
char** parse(string s){
vector<string> commandvector;
istringstream iss(s);
for(string s; iss>>s;)
commandvector.push_back(s);
char** argv = new char*[commandvector.size() + 1];
for(int i = 0; i<commandvector.size();i++){
argv[i] = new char[commandvector[i].size()];
strcpy(argv[i],commandvector[i].c_str());
}
argv[commandvector.size() + 1] = NULL;
return argv;
}
爲什麼你降級到char *當你已經有字符串? – Jodocus
'argv [commandvector.size()+ 1] = NULL;'訪問數組超出範圍並調用*未定義的行爲* – UnholySheep
感謝一噸,修復了一切 –