c++里的strlen函数为什么会出错啊?

c++里的strlen函数为什么会出错啊?,第1张

如果只是一个char s[10000]数组的话,是没有问题的,可能你同时还有其它大数组。因为在一个函数内部定义的变量空间是有限度的,所以,数组元素很多时,就会造成程序不能正常运行。你可以把这个char s[10000]的定义语句,移出函数体,放到所有函数的外部,再重新编译运行。

wp lp 没有提供内存 应该写

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11321597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存