結局、何が正しいのか分からんのだが…
sizeofは基本的にコンパイル時に評価されると思ってたから、
何をしても、アクセスしないだろうってタカを括ってたんだが
良く考えたらC99で可変サイズが可能になったよね?
で、それに伴って、実行時に評価されることもあるよね?
実装を考えれば安全だとは思うのだが、規格上でも、本当に安全?

int max=5;
int hoge[max]; /* C99 */
for( i=0; i<(sizeof(hoge)/sizeof(hoge[0])); i++) hoeg[i] = i;