char wp[size] ,lp[size] size你随便设 至少11为(int 转换为负数有可能占11个字符)
你只是声明了一个字符指针,没有实际存储区,所以sprintf会写到一个未知的地方,你没赋值,应该是0地址,这个地址不能访问。。。
实际你执行的是 sprintf((char*)0,"%d",num1) 怎么可能不出错。。。
qstringfromutf8_helper崩溃char* c_str 值通过第三方获取,没有具体长度,是"中文字符中文字符中文字符中文字符中文字符..." (超过2000多个中文汉字)
QString s_str(c_str)
QString s_str=QString::fromUtf8(c_str)
调用以上两个方法,程序都会崩溃,崩溃原因在于:构造QString时没有指定长度,默认为-1,QT自动通过strleng(cha*)获取长度为int类型,传人c_str后的strleng方法超出int范围,导致崩溃。
解决办法:
指定char*长度
例如:
char buf[51200](大于汉字字数*3即可);
sprintf(buf, "%s", c_str)
QString s_str(buf)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)