【发布时间】:2011-11-16 15:21:57
【问题描述】:
根据维基百科 (http://en.wikipedia.org/wiki/Buffer_overflow)
通常与缓冲区溢出相关的编程语言包括 C 和 C++,它们没有提供内置保护以防止访问或覆盖内存任何部分中的数据,并且不会自动检查写入数组的数据(内置缓冲区类型) 在该数组的边界内。边界检查可以防止缓冲区溢出。
那么,为什么 C 和 C++ 等某些语言没有实现“边界检查”?
【问题讨论】:
-
开销并不总是必需的。
-
这是一些程序员认为不需要的开销。那些从不犯错的人。
-
@Hans,开发应用程序和运行单元测试时需要;但是当它实际运行时,它并没有帮助,因为大概代码已经将边界检查作为访问它的逻辑的一部分实现了。
-
这将适合那些认为他们从未犯过错误的单元测试人员的类别。他们应该会面并思考为什么程序仍然存在错误。可能会得出结论是用户的错。
-
这是一些应用程序真正不需要的开销。指责程序员的无知/傲慢是幼稚的。
标签: programming-languages implementation buffer-overflow