2015-04-19 31 views
0

數組邊界檢查可以靜態執行嗎? 我認爲它只能使用靜態數組(編譯器知道大小)而不是動態數組(編譯器不知道大小)。數組邊界檢查可以靜態執行嗎?

編輯:有關C和Java及其折衷(速度與效率)的初步問題已得到解答,似乎也不清楚,因此已刪除。

謝謝

+1

你的問題到底是什麼?邊界檢查是什麼意思?如果你引用一個數組的大小,你應該閱讀Java的基礎知識。 – Turing85

+0

是的,檢查索引是否在數組邊界內。 –

+0

然後你應該閱讀一些關於Java的教程。 – Turing85

回答

2

Ç趨於值速度高於一切,所以邊界檢查不是語言的一部分。在一般情況下,不能對所有代碼進行靜態編譯,因此運行時成本會影響性能至關重要的應用程序不希望支付的時間。

Gcc不支持插入代碼進行邊界檢查。有人有added code這樣做,但它尚未添加到官方消息。

+0

謝謝。當你說「它不能爲所有代碼靜態完成」:只是爲了澄清,它可以做到這一點靜態數組,但不是動態數組?還是我把這一切搞混了? –

+0

使用動態數組很難但並非不可能,因爲數組的大小需要使用靜態代碼分析技術來確定。這涉及到查看不同的代碼路徑,函數調用,循環等。不容易,分析不能總是預測變量的值或動態數組的大小。 –

相關問題