[]便宜无错,第一次运行无有关问题.第二次运行出错.为什么

[求助]便宜无错,第一次运行无问题.第二次运行出错....为什么?好奇怪啊以前没有遇到过类似问题...winxp系统

[求助]便宜无错,第一次运行无问题.第二次运行出错....为什么?
好奇怪啊以前没有遇到过类似问题...
winxp系统 mingw32的编译器 ide是codeblocks
代码如下.有知道的请指教一二 谢谢拉.....我很迷惑...

C/C++ code
int ssq_cpp::ssq_fx(){    cout<<"准备完成,计算开始......"<<endl;    for(int i=0; i<ysssq.size()-1; i++)    {        string tmp_str[8];        char* tmp_char=new char[strlen(ysssq[i].c_str())+1];        strcpy(tmp_char,ysssq[i].c_str());        cout<<"|"<<tmp_char<<"|"<<endl;        tmp_str[0]=strtok(tmp_char," ");        for(int j=1;j<9;j++)          //出错点1        {            tmp_str[j]=strtok(NULL," ");        }        cout<<tmp_str[8]<<endl;       //出错点2    }    cout<<"计算完成"<<endl;    return 0;}


出错点1 和 2 在输出和赋值时出错 原因不明...
ysssq是个vector<string>类型
内部数据结构是
id date int1 int2 int3 int4 int5 int6 int7

每个参数 以 空格分开.我的代码本意是想把每行数据,分解到数组中分别计算....

[解决办法]
tmp_str数组只有8个,越界了
strlen(ysssq[i].c_str())可以改成ysssq[i].length()

顺便char*和string混用看着有点……