永发信息网

vs2008中为什么使用strcpy不安全而用strcpy_s替换(尽量详细点)

答案:2  悬赏:0  手机版
解决时间 2021-04-27 02:03
vs2008中为什么使用strcpy不安全而用strcpy_s替换(尽量详细点)
最佳答案
strcpy_s 函式是 strcpy 的安全版本,属于 ISO/IEC TR 24731 的标准, 某些 C 函式库支援这个函式,包含 Microsoft C Runtime Library(微软 C 语言执行时期函式库)。它与 strcpy 的不同在于,在它取得额外参数来决定目的缓冲区大小时,会因为发生溢位而出现错误,如此一来,就可以预防缓冲区溢位。由于 strcpy_s 对于 C 语言来说是新的函式,所以没有特别受到广泛支援。

例如, 我们有个数组: unsigned char buf[2];
当我们使用strcpy(buf, "1234567")时, 以buf为起点的*(buf+3)也就是buf[3]被写入值, 但是, 此时也许这个buf+3这个位置被其它的程序或变量使用时, 则会改变其它变量的值.
而strcpy_s(buf,2,"1234567")则告诉程序它只有两个字节, 此时, 程序不会将数据写入到 buf+3的地址中, 所以它更安全.
全部回答
原型声明:extern char *strcpy(char *dest,const char *src);
实际使用时,要求调用前预先申请dest指针的内存空间,但是可能此空间的长度小于src的长度。此函数在复制字符串时,将会从src开始,一直碰到NULL为止,这样在复制时就可能超出dest的范围,导致内存错误。
strcpy_s多了一个dest空间长度的参数,会控制复制字符串的过程,不会越界,因而这个函数是安全的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
魔兽部落荣誉点在哪换59级左右紫装
第35回中傅试和贾家有什么关系?他妹子叫什么
衣服在太阳底下暴晒之后,颜色变白了该怎么办
德艺路/运河直街(路口)在哪里啊,我有事要去
郑州杰士邦的避孕套12装的一盒多少钱?
罗宾逊漂流记作者y
什么玩具只须投一元硬币就能玩
怎样让塌鼻子变挺,怎样才能让鼻子变挺
跪求一首歌!我前几天在电视上听到一首歌。名
什么样的礼物才能永远记得住?
怎么可以知道别人空间里的歌曲名字
求坏蛋Ⅲ风云再起全文.
天津市蓟州区上仓镇初级中学地址在什么地方,
帮帮忙起个关于“父爱”的题目
帮我把下面三国名打出来给我下
推荐资讯
拜仁新赛季的门将会是谁?俱乐部会不会买主力
喜洋水果地址在哪,我要去那里办事
丫髻岭地址有知道的么?有点事想过去
我数学和化学都超烂,高二人居然报了理科,怎
在东莞哪里的手机批发市场好些谁知道
金山毒霸-实时防毒启动不了怎么办?
如果有一个人说要和你一辈子,那该怎么办?
在哪可以查QQ空间能用的音乐链接?
天龙八部2…5173上购买账号问题…高手来!
新东方俞敏洪语录,谁有俞敏洪励志演讲,要有
我的仙人掌是用水养的。可是为什么几天没换水
下载标准版的炫舞大概要多长时间?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?