_tcscpy_s函数引发的问题
网上下载的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函数引发的问题相关推荐
- 由c#事件监听、回调函数引发观察者模式
由c#事件监听.回调函数引发观察者模式 事件监听: C#中的事件,可以简单的理解为类或者对象发生了一件事,并且把这件事通知给了其他的类或者对象,其他的类或者对象可以根据事件的消息有所反应. 这非常类似 ...
- 转:一个Sqrt函数引发的血案
转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...
- 一个Sqrt函数引发的血案
我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢? 虽然 ...
- oracle trim 性能,ORACLE sql调优之记录一次trim函数引发的大表全表扫描
2017年8月14日,一地市oracle相关的调度程序ETL抽取速度奇慢,sql语句每次执行平均时间要9秒左右,如果所示: 该调度过程涉及的sql语句如下: select count(*) from ...
- php is uploaded file,is_uploaded_file函数引发的不能上传文件问题
is_uploaded_file函数引发的不能上传文件问题 更新时间:2013年10月29日 16:20:11 作者: 不能上传文件,都返回失败.经过排查发现是PHP中的is_uploaded_f ...
- python 使用异常函数_您如何测试Python函数引发异常?
python 使用异常函数 This article elaborates on how to implement a test case for a function that raises an ...
- is_uploaded_file函数引发的问题
起因 : 在利用MooPHP的一个项目中,接到用户反馈说其所有客户不能上传文件,都返回失败.经过排查发现是PHP中的is_uploaded_file函数在 捣鬼. 细节分析 : 在正常情况下,通过PH ...
- realloc函数引发的慘案
帮别人调试个程序,程序的功能主要涉及动态数组.实现动态数组元素的加入,删除,查找.显示功能.可是在运行加入功能的时候,连续运行三次加入的时候就会出现故障,让人感到很的莫名其妙. 涉及到的函数例如以下所 ...
- 由strcat函数引发的对char *a和char a[]以及sizeof和strlen
/* http://www.cnblogs.com/kaituorensheng/archive/2012/10/23/2736069.html 参考这篇文章 * char *a = "H ...
最新文章
- mysql 多主多从配置,自增id解决方案
- go mysql socket_Go语言实现socket实例
- [转]Java中Runtime.exec的一些事
- java 根据预览图片上传_JavaSctit 利用FileReader和滤镜上传图片预览功能
- maven配置文件 pom.xml
- linux task进程跟踪,如何对Hadoop作业的某个task进行debug单步跟踪
- MPAI正式启动端到端的AI编码标准
- PMP 之程序性计划、实体性计划、综合计划
- 调试 ASP.NET Core 2.0 源代码
- 不同路径 II-dp
- 注册表操作命令reg
- SpringCloud04 服务配置中心、消息总线、远程配置动态刷新
- ubuntu之解决安装python3.6.4后出现error while loading shared libraries: libpython3.6m.so.1.0的问题
- 一个完整的计算器c语言源代码,分享一个C语言的计算器源代码
- vue 微信支付的坑_微信支付踩坑
- 文献调研(一):基于集成学习和能耗模式分类的办公楼小时能耗预测
- 短线起爆点(移动均线15种战法)
- 支持跨平台的移动开发工具大盘点!
- 【笔记】初读《SICP》:递归和迭代
- 混合颜色带的应用(二)
热门文章
- IT从业者都应关注的软件行业的变化
- Python sorted 和 sort() 的区别
- jquery 毫秒转换成日期_基于jQuery的时间戳与日期间的转化
- 2021年Q2:全球超大规模数据中心数量增至659个
- 微软停止与华为合作:Windows暂停供应新订单
- 保持寄存器和输入寄存器的区别_串行移位寄存器74HC595
- python绘制如下图形、小三角形边长20_在编程中发现数学之美——使用Python小龟绘制多边形...
- AI:Algorithmia《2021 enterprise trends in machine learning 2021年机器学习的企业趋势》翻译与解读
- 成功解决Exception “unhandled AttributeError“ module ‘cv2.cv2‘ has no attribute ‘estimateRigidTransform‘
- DataScience:深入探讨与分析机器学习中的数据处理之线性变换—标准化standardization、归一化Normalization/比例化Scaling的区别与联系