静态边界检查不可能完备,且检测能力与编译器实现复杂度有关;动态边界检查有代价。语言不方便规定一个不确定的静态检查规则,只能规定对数组下标是不是动态检查。这个不难理解。
至于不做有代价的动态检查是不是合口味就另说。
严格说数组越界访问是UB,所以至少在语言层面并不完全是为了故意留一些特殊技巧的口子。
【 在 mrunmatched 的大作中提到: 】
: 明明编译都检查出数组越界了,愣是只报warning,还允许编译通过,是怎么想的?给黑客留后门?
: 不怪很多大公司呼吁用内存安全语言替换他,再不思进取,过几年就被淘汰了。
:
: ...................
--
修改:milksea FROM 124.64.17.*
FROM 124.64.17.*