1. 首页
  2. 编程语言
  3. C
  4. C++小知识:大于0并不意味着等于1

C++小知识:大于0并不意味着等于1

上传者: 2021-05-01 05:54:36上传 PDF文件 56.56 KB 热度 11次

但是这个错误也非常典型,估计很多非常严肃的代码里面都存在这样的错误。这个 Bug 是来自于 CoreCLR 源代码。你不能将 memcpy()、strcmp() 以及其他一些标准函数的返回值,和 1、-1 这些具体的数字做比较,因为这些函数的返回值只保证大于 0 或者小于 0。上面那段错误的代码可能在很长时间内都能正常工作。不过那仅仅是因为运气好而已,没什么其他原因。某一天你写的函数很可能突然间就崩溃了 ―― 比如,你换了一个编译器编译源代码,或者通过其他方式优化了 memcpy() 函数。不要依赖函数本身的行为。也就是说这个函数可能返回 -10、2 或者 1024。这个错误是通过 PSV-Studio 静态分析工具扫描分析得到的。

下载地址
用户评论