网站是用虚拟机做还是服务器天津二十四格制作公司
2026/4/18 14:26:55 网站建设 项目流程
网站是用虚拟机做还是服务器,天津二十四格制作公司,公司网站建立教程,能建网站的app博主介绍#xff1a;程序喵大人 35 - 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章#xff0c;首发gzh#xff0c;见文末#x1f447;#x…博主介绍程序喵大人35 - 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章首发gzh见文末记得订阅专栏以防走丢C基础系列专栏C语言基础系列专栏C大佬养成攻略专栏C训练营个人网站背景最近遇到了个奇怪的问题同样的代码在Windows 下正常运行在iOS下必现crash。异常代码如下std::stringStringPrintf(constchar*format,...){va_list ap;va_start(ap,format);char*buffernullptr;constsize_t sizestd::vsnprintf(nullptr,0,format,ap)1;buffernewchar[size];std::vsnprintf(buffer,size,format,ap);va_end(ap);std::stringresult(buffer);delete[]buffer;returnresult;}经过分析定位后发现这里重复使用了va_list并且在vsnprintf后还继续使用了ap进而导致的crash。通过查看文档https://port70.net/~nsz/c/c11/n1570.html#7.21.6.8这里明确说明arg在vsnprintf后会变成不确定的状态。所以才有了在Windows上可以正常运行在iOS上会异常退出的问题。如何解决这个问题标准做法是使用va_copy复制一份va_list如下std::stringStringPrintf(constchar*format,...){va_list ap,ap_copy;va_start(ap,format);va_copy(ap_copy,ap);constint32_tsizestd::vsnprintf(nullptr,0,format,ap)1;va_end(ap);if(size0){return;}char*buffernewchar[size];std::vsnprintf(buffer,size,format,ap_copy);va_end(ap_copy);std::stringresult(buffer);delete[]buffer;returnresult;}以前都是直接使用的三方库StringPrintf而没有自己实现。这也算是使用vsnprintf过程中遇到的一个小坑在此分享记录一下。码字不易欢迎大家点赞关注评论谢谢

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询