數組slicing操作并不復制數據。
指針的slicing操作和數組slicing語意是相同的。
通過slicing生成D數組,比原來直接使用指針的好處是可以有邊界檢查。
最近剛好犯了這個錯誤,在使用freetype時,render出來的位圖數據直接使用slicing生成數組保存起來。由于slicing并不復制數據,這樣后面的render操作會覆蓋前面的數據,所以我保存的數組其實都指向同一個緩沖區。當釋放face對象時,緩沖區也沒了,再訪問恐怕要段錯誤了。
這個是D文檔中明確描述了的,我卻花了點時間才排除這個錯誤,寫下來記錄之~