zhanzr21的个人空间 https://bbs.21ic.com/?1195922 [收藏] [复制] [RSS]

日志

C11标准综述-5

已有 127 次阅读2018-1-5 19:39 |系统分类:兴趣爱好

gets() 被删除

gets()因为不知道其要使用的缓冲区的大小,而造成很大的安全隐患. 该函数屡屡成为攻击者利用的爆破点. C99中该函数被标记为过时,C11彻底删除该函数.提供了另外一个安全版本:

char *gets_s(char * restrict buffer, size_t nch);

该函数对最长使用buffer空间做了限制.

fopen() 接口

fopen()在C11中进行了新的装修,增加了独占模式 (“...x“). 该模式与POSIX中的O_CREAT|O_EXCL 类似, 用来操作文件锁. 新的模式包括:

  • wx 独占写模式.
  • wbx 独占写模式(二进制).
  • w+x 独占更新模式.
  • w+bx 或者wb+x 独占更新模式(二进制).

另外增加了fopen()的一个安全版本:fopen_s() .

总结

C11 试图改进C99的诸多不合理之处. C99中的一些强制要求 (变长数组,复数类型等) 在C11中可选. C11也引入了业界已经广泛实现的一些扩展功能. 不可忽视的是C11标准的制定者与C++委员会紧密合作,最大可能保持两种语言的兼容. 可以预见的是C11将比其前任标准获得更热烈的欢迎. 最后C11标准也将使得C语言编写的程序更加安全与稳定.


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)