- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是为什么
char* itoa(int value, char* str, int base);
而不是
char (*itoa(int value, char (*str)[sizeof(int) * CHAR_BIT + 1], int base))[sizeof(int) * CHAR_BIT + 1]
这可以保护程序员免受缓冲区溢出的影响?
最佳答案
itoa
不是标准的,因此任何库都可以随意声明它。首先询问关于未标准化的功能的基本原理并没有多大意义。
那些被标准化的函数大多是偶然进入标准的。他们基本上采用了 Unix 中可用的所有功能,将其名称写在纸上,然后将它们扔进帽子里,然后异想天开地画了一百个左右。所以我们得到了一堆不同质量和用途的不同功能。我想说其中大多数要么不安全,要么风格不好。不存在任何理由。
<小时/>具体情况:
不使用固定数组指针的原因显然是 C 中的大多数库函数(无论是否标准)都适用于具有可变长度的以 null 结尾的字符串。如果某个函数的行为有所不同,它就会脱颖而出。当 C 推出时,Unix 显然正在尝试从固定长度字符串转向以 null 结尾的字符串。
此外,关于指针转换的规则最初几乎不存在,因此在 20 世纪 70 年代,当所有这些函数都成熟时,使用数组指针可能不会增加任何安全性。甚至没有 void 指针类型。
关于缓冲区溢出和其他错误控制:在编写 C 语言时,您可以将错误控制放在函数中或调用者中。 C 中最常见的做法是将错误处理留给调用者,只要有记录就完全没问题。这其中有一个道理,就是“C精神”,就是永远把性能放在第一位。错误处理会降低性能。在许多用例中,调用者提前知道数据的性质,使得此类错误控制变得多余。
关于c - 为什么 itoa 被宣布为不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657859/
能否解释一下proclaim、declaim和declare这三个符号的区别? 最佳答案 它们是 symbols , 不是 keywords . proclaim命名为function使全局化 dec
我正在尝试使现有应用程序尽可能易于访问以进行语音传输。 目前,我有一个 uiviewcontroller,它基本上是一个分页照片 View ,在 uiscrollView (tourScrollVie
选择 UITableViewCell 时,画外音会宣布“已选择”,我不希望画外音说“已选择”。我怎样才能做到这一点? 我尝试过但没有成功的事情: 更改了单元格 accessibilityHint 和
我正在测试一个带有 TalkBack 的 Android 应用程序,“LIST”这个词被宣布为“Fifty first”。显然,TalkBack 假设大写字母“LI”是罗马数字 51。 我无法访问源代
假设 你在 github 上 fork 了一个项目 多人(少于 5 人)正在使用这个 fork 目标是对我们的更改提出 pull 请求 在对我们的分支进行几次提交之后,我们现在想要将我们的分支更新为源
我是一名优秀的程序员,十分优秀!