错误原因:
数组大小定义太小,在使用时越界。例如下面的代码就可能导致这个错误:
char str[200];
char s1[10];
char s2[10];//s1, s2定义太小
while(fgets(str, sizeof(str), fp))
{
//如果str中存储的两个字符串很大,虽然s1,s2仍然能存储(越界存储),
//但在函数结束,释放局部变量时,
//就会出现stack around s1/s2 is corrupted 错误
sscanf(str, "%s%s", s1, s2);
if(strcmp(s1, "mesh_pattern_name:")==0)
{
vMeshPatternName.push_back(string(s2));
if(vMeshPatternName.size() == patternNum)
{
break;
}
}
}