打印

这段代码在做什么?

[复制链接]
976|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
limee|  楼主 | 2019-12-6 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是否存在内存泄漏,我这里注释掉就好了.

/*
                for (j = 0; j < len; j++) {
                    int ms;

                    if (lrc[i + j] == ',') {
                        char ftime[14];
                        lrc[i + j] = 0;

                        ms = atoi((char*)&lrc[i + 1]);
                        sprintf(ftime, "[%.2d:%.2d.%.2d]", (ms % (1000 * 60 * 60)) / (1000 * 60), (ms % (1000 * 60)) / 1000, (ms % (1000 * 60)) % 100);
                     
                        for (j = 0; j < 10; j++) {
                            fputc(ftime[j], fp);
                      }

                        i = i + len - 1;
                        break;
                    }
                }
                                */

否则出现下面的信息,win7 32位旗舰版  

问题签名:
  问题事件名称:        APPCRASH
  应用程序名:        krc2lrc.exe
  应用程序版本:        0.0.0.0
  应用程序时间戳:        5de8a603
  故障模块名称:        ntdll.dll
  故障模块版本:        6.1.7601.17514
  故障模块时间戳:        4ce7b96e
  异常代码:        c0000005
  异常偏移:        00055ff0
  OS 版本:        6.1.7601.2.1.0.256.1
  区域设置 ID:        2052
  其他信息 1:        0a9e
  其他信息 2:        0a9e372d3b4ad19135b953a78882e789
  其他信息 3:        0a9e
  其他信息 4:        0a9e372d3b4ad19135b953a78882e789

联机阅读隐私声明:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
  C:\Windows\system32\zh-CN\erofflps.txt

使用特权

评论回复

相关帖子

沙发
dirtwillfly| | 2019-12-6 11:21 | 只看该作者
像是批量转换时间格式,然后保存到文件。最好结合前后文看这段代码的功能

使用特权

评论回复
板凳
cococphone| | 2019-12-8 19:43 | 只看该作者
看看lrc这个数组的长度有多大, 是不是越界了?

使用特权

评论回复
地板
cool_coder| | 2019-12-13 23:44 | 只看该作者
代码里不涉及动态内存分配,不存在内存泄漏的问题,应该是访问越界了。代码里应该有边界检查。最有可能出问题的是ftime[],它是分配在栈里的,又在执行过程中被写入,一旦越界,会破坏程序堆栈,造成崩溃。新写的程序不要用sprintf(),有更安全的版本:sprintf_s()。另外,解析逗号分隔的字串有专用的函数。自己重复实现即费力又容易出错。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

301

主题

475

帖子

0

粉丝