ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存泄露。所以vc++2005/2008中提供了scanf_s(),在调用时,必须提供一个数字以表明最多读取多少位字符。
创新互联于2013年开始,是专业互联网技术服务公司,拥有项目成都做网站、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元武威做网站,已为上家服务,为武威各地企业和个人服务,联系电话:18982081108
是的。
多线程程序中,线程安全是必须要考虑的因素。C语言中大部分函库函数都是线程安全的,但是也有几个常用函数是线程不安全的,也叫不可重入函数。之所线程不安全,是因为这些系统函数使用了某些全局或者静态变量。
我们知道,全局变量和静态变量分别对应内存中的全局变量区和静态存储区,这些区域都是可以跨函数跨线程访问的。
fopen函数,可能被多个进程同时打开文件,进行读写操作,此时文件内容可能失去顺序性。fopen_s函数没有这个问题,只要前一次文件打开后还没有关闭文件,后一个程序就无法打开这个文件。
这个提示一般出现于VS里面,但是不代表不安全。按照我的理解可能是后边这个函数不需要显示的关闭文件描述符。
gets确实是不安全的,因为无法知道该函数返回的数据有多长。
安全的用法是用fgets替代gets