byte* bshowsize=new byte[size];
memcpy((LPSTR)bshowsize,(LPCSTR)fpread,size); string mystr("");
mystr.reserve(typen9*4+6);
int iitemp = 0;
char strtemp;
for (int i=0;i<size;i++){
iitemp = 128;
for (int k=0;k<8;k++){
itoa((bshowsize[i]&iitemp)>>(7-k),&strtemp,2);//"11101100"->'1','1','1','0',.....
mystr.push_back(strtemp);
iitemp=iitemp/2;
}
}
delete[] bshowsize;如上代码段,运行后(可以成功运行),但会提示:Run-Time Check Failure #2 - Stack around the variable 'strtemp' was corrupted.不知道怎么回事!请指教!

解决方案 »

  1.   

    你的栈被破坏了。mystr.push_back(strtemp);    //这行代码什么意思?好象STL容器才有push_back吧?
    我懒了,机器太老,VC7开起来太慢了,你自己检查了。也可能错误代码不在这里,应该是你局部数组赋值时越界了。比如这样的代码会导致这种可恶的错误
    void somefunction()
    {
      ......
      int a[10];
      for (int i=0; i<=10; ++i)
        a[i] = i;
      ......
    }
      

  2.   

    找到错误了!!原来msdn上写得很清楚itoa()转换的时候要注意字符的BUF大小,要预留NULL位和符号位,而我只申请了一个char,肯定不够,希望大家同样能吸取教训,以后小心,呵呵