天天看點

stack around xxx is corrupted

錯誤原因:

數組大小定義太小,在使用時越界。例如下面的代碼就可能導緻這個錯誤:

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:")==)
        {
            vMeshPatternName.push_back(string(s2));
            if(vMeshPatternName.size() == patternNum)
            {
                break;
            }
        }

    }