#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = "123";
char* pbuf = new char[s.size()];
strcpy(pbuf, s.c_str());
cout<<pbuf<<endl;
delete[] pbuf;
}
原因:strcpy把第四位的'\0'也拷贝了,s.size却是3
解决:char* pbuf = new char[s.size()+1];
应该此类错误都会在delete碰到,原因相似
参考:http://www.cnblogs.com/lzjsky/archive/2010/09/27/1836807.html
Run-Time Check Failure #2 - Stack around the variable 'chData2' was corrupted.
代码如下:
char ch;
for(long index=0; index<=len/2-1; index++)
{
//获取一个pvalue内容形如:"1A", "0F"
sscanf(pvalue+index*2, "%02x",&ch);
//其他代码省略
}
原因:sscanf最后一个参数就是一个指向int类型的指针了,而我给的实际是一个char的指针
解决:
char ch[4];
sscanf(pvalue+index*2, "%02x",ch);