struct info
{
int ID;
char Key[128];
}TestInfo;
TestInfo.ID = 100;
memcpy_s(&TestInfo.Key, 128, "TestInfromation", 128 ) int iInfoLen = sizeof( info );
char *pInfo = new char[iInfoLen*2+1]; //请注意这一行
mysql_escape_string( pInfo ,(char*)&TestInfo, iInfoLen );
SqlCommand(&MySql, "update test set info='%s' where ID=1", pInfo );//自己写的一个函数 delete[] pInfo;现在的问题是 pInfo 的长度为 iInfoLen+1 时,在最后delete时,程序会崩溃
如果 pInfo 的长度为 iInfoLen*2+1 时,在最后delete程序就不会崩溃,这是为什么啊?按理说pInfo长度为iInfoLen+1时应该也能装下TestInfo里面的数据啊
转义就是将那些不可见的字符用两个可见的字符(\加一个另外的符)来表示,如串结束符0x00就用“\0”两个字符来表示,回车0x0D就用“\r”两个字符来表示,等等。极端情况下,你给出的TestInfo中的每一个字节都需要转义的话,其结果长度就是原长度的2倍,再加上一个结束符就是2倍加1了。
表述能力不好,希望能够理解。