网上下载的VS2017 VC++工程,发现一段代码老是报堆破坏的的错误,当时没去理会,自己写了一段代码重新实现了需要的功能:

if(dwDevName != NULL)
                {
                    /*
                    if(*sValue)
                    {
                        TCHAR *szTemp = new TCHAR[sizeof(DWORD)];
                        _tcscpy_s(szTemp, sizeof(DWORD)*sizeof(TCHAR), sValue+3);
                        dwDevName[idx] = (DWORD)_ttoi(szTemp);
                        delete [] szTemp;
                    }
                    */

if (*sValue)
                    {
                        int k;
                        int comNum = 0;
                        for (k = 0; k < 3; k++)
                        {
                            if (sValue[3 + k] == '\0')
                            {
                                break;
                            }
                            else
                            {
                                comNum = comNum*10+(sValue[3 + k]-0x30);
                            }
                        }
                        dwDevName[idx] = (DWORD)comNum;
                    }
                }

后来经过仔细分析和调试,发现问题出在_tcscpy_s函数,通过修改动态内存大小:TCHAR *szTemp = new TCHAR[128];

错误暂时消失。由此推测是内存的非法访问造成的。查看MSDN,发现是对函数的第二个参数的理解出错了,把那个长度当成内存字节数了,应该是字符数才对。

正确方式:由 _tcscpy_s(szTemp, sizeof(DWORD)*sizeof(TCHAR), sValue+3);

改为: _tcscpy_s(szTemp, sizeof(DWORD), sValue+3);

errno_t strcpy_s( char *dest, rsize_t dest_size, const char *src );

参数

dest
目标字符串缓冲区的位置。

dest_size
在目标字符串缓冲区的大小char单位窄和多字节函数,并wchar_t宽函数的单位。 此值必须大于零且不大于RSIZE_MAX

src
以 null 结尾的源字符串缓冲区。

返回值

如果成功,则为零;否则返回错误。

_tcscpy_s函数引发的问题相关推荐

  1. 由c#事件监听、回调函数引发观察者模式

    由c#事件监听.回调函数引发观察者模式 事件监听: C#中的事件,可以简单的理解为类或者对象发生了一件事,并且把这件事通知给了其他的类或者对象,其他的类或者对象可以根据事件的消息有所反应. 这非常类似 ...

  2. 转:一个Sqrt函数引发的血案

    转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...

  3. 一个Sqrt函数引发的血案

    我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢? 虽然 ...

  4. oracle trim 性能,ORACLE sql调优之记录一次trim函数引发的大表全表扫描

    2017年8月14日,一地市oracle相关的调度程序ETL抽取速度奇慢,sql语句每次执行平均时间要9秒左右,如果所示: 该调度过程涉及的sql语句如下: select count(*) from ...

  5. php is uploaded file,is_uploaded_file函数引发的不能上传文件问题

    is_uploaded_file函数引发的不能上传文件问题 更新时间:2013年10月29日 16:20:11   作者: 不能上传文件,都返回失败.经过排查发现是PHP中的is_uploaded_f ...

  6. python 使用异常函数_您如何测试Python函数引发异常?

    python 使用异常函数 This article elaborates on how to implement a test case for a function that raises an ...

  7. is_uploaded_file函数引发的问题

    起因 : 在利用MooPHP的一个项目中,接到用户反馈说其所有客户不能上传文件,都返回失败.经过排查发现是PHP中的is_uploaded_file函数在 捣鬼. 细节分析 : 在正常情况下,通过PH ...

  8. realloc函数引发的慘案

    帮别人调试个程序,程序的功能主要涉及动态数组.实现动态数组元素的加入,删除,查找.显示功能.可是在运行加入功能的时候,连续运行三次加入的时候就会出现故障,让人感到很的莫名其妙. 涉及到的函数例如以下所 ...

  9. 由strcat函数引发的对char *a和char a[]以及sizeof和strlen

    /* http://www.cnblogs.com/kaituorensheng/archive/2012/10/23/2736069.html 参考这篇文章 *  char *a = "H ...

最新文章

  1. mysql 多主多从配置,自增id解决方案
  2. go mysql socket_Go语言实现socket实例
  3. [转]Java中Runtime.exec的一些事
  4. java 根据预览图片上传_JavaSctit 利用FileReader和滤镜上传图片预览功能
  5. maven配置文件 pom.xml
  6. linux task进程跟踪,如何对Hadoop作业的某个task进行debug单步跟踪
  7. MPAI正式启动端到端的AI编码标准
  8. PMP 之程序性计划、实体性计划、综合计划
  9. 调试 ASP.NET Core 2.0 源代码
  10. 不同路径 II-dp
  11. 注册表操作命令reg
  12. SpringCloud04 服务配置中心、消息总线、远程配置动态刷新
  13. ubuntu之解决安装python3.6.4后出现error while loading shared libraries: libpython3.6m.so.1.0的问题
  14. 一个完整的计算器c语言源代码,分享一个C语言的计算器源代码
  15. vue 微信支付的坑_微信支付踩坑
  16. 文献调研(一):基于集成学习和能耗模式分类的办公楼小时能耗预测
  17. 短线起爆点(移动均线15种战法)
  18. 支持跨平台的移动开发工具大盘点!
  19. 【笔记】初读《SICP》:递归和迭代
  20. 混合颜色带的应用(二)

热门文章

  1. IT从业者都应关注的软件行业的变化
  2. Python sorted 和 sort() 的区别
  3. jquery 毫秒转换成日期_基于jQuery的时间戳与日期间的转化
  4. 2021年Q2:全球超大规模数据中心数量增至659个
  5. 微软停止与华为合作:Windows暂停供应新订单
  6. 保持寄存器和输入寄存器的区别_串行移位寄存器74HC595
  7. python绘制如下图形、小三角形边长20_在编程中发现数学之美——使用Python小龟绘制多边形...
  8. AI:Algorithmia《2021 enterprise trends in machine learning 2021年机器学习的企业趋势》翻译与解读
  9. 成功解决Exception “unhandled AttributeError“ module ‘cv2.cv2‘ has no attribute ‘estimateRigidTransform‘
  10. DataScience:深入探讨与分析机器学习中的数据处理之线性变换—标准化standardization、归一化Normalization/比例化Scaling的区别与联系