この関数は少し実行され、proc_index
変数は-1886854513になります。コードに何か問題がありますか?なぜこのintはランダムに巨大な負の値に変わるのですか?
int parse_words(vector< vector<string> > &temp_word_vec, int num_of_sub_lists)
{
char word[MAX_WORD_LENGTH+1]; // +1 makes room for a newline character
int proc_index = 0; //index of word arr for child process "proc_index"
string word_str;
cerr << "point1\n";
while(fscanf (stdin, "%s", &word) != EOF)
{
cerr << "point2\n";
for(int i = 0; i < MAX_WORD_LENGTH; i++)
{
word[i] = tolower(word[i]);
if(word[i] == '\0')
{
word_str.push_back('\n');
word_str.push_back('\0');
break;
}
if(isalpha(word[i]))
{
word_str.push_back(word[i]);
}
}
cerr << "point3, proc_index = " << proc_index << ", word is " << word_str << "\n";
temp_word_vec[proc_index].push_back(word_str);
++proc_index;
if(proc_index == num_of_sub_lists)
proc_index = 0;
word_str.clear();
}
return 0;
}
'num_of_sub_lists 'の最大値はいくらですか? 'num_of_sub_lists'は負になりますか? – Xeo
MAX_WORD_LENが実際に最大値になっていますか?そうでなければ、スタックの次のものを上書きすることができます。これはprocIndexです。 – user1118321
@ user1118321:しかし、入力ストリームがunsanitizedであることに関して、 'MAX_WORD_LEN'は決して十分ではありません。プログラムを制動するには 'program dev/random'を実行します。 –