- Structure Size
這是一個程式設計師在處理structure常會忽略的問題,舉以下的範例來說明:
預期之下我們會認為是30+4 bytes,但是實際輸出是36 bytes,當然這是可以解釋的,因為編譯器要為CPU做最佳化處理,所以檔案大小會對齊於可除4的位置,所以結果才會是36bytes。
這樣的特性卻很有可能造成另一個問題,尤其是當我們在處理影音的程式時,我們並需要大量的讀寫結構體,當結構體變得很複雜時,你很難掌控結構體大小,錯誤很有可能就在這個時候發生,所以在處理多型態混雜的結構體時,我會用下面的方式宣告。
使用#pragma強制結構體的宣告依照我們所定義的大小而定,雖然這樣做事必會損失一點執行效率,但是在處理複雜的程式時,像是大型的genetic programming,我們寧可選擇讓結構體不最佳化來宣告,以避免出錯時要花更多的時間去debug,甚至你有可能完全忽略他所造成的錯誤,進而產生錯誤的數據。
[C/C++] Structure Size
Subscribe to:
Post Comments (Atom)
Orange - data analysis tool
Installation pip install orange3 Run orange python -m Orange.canvas
-
Socket Connection 節錄自筆者的Network Programming其中的資料,一般在Windows底下如果要寫網路程式多半會想到Microsoft MFC提供的相關API,而Linux底下則多使用Unix Socket來實現,這裡筆者要簡短的介紹如何使用最基礎...
-
system("pause") for linux 在windows底下如果不想藉由開發工具做debug時,筆者我多數使用system("pause")這個指令,但是一到了linux之後,這個指令完全無效,因為linux的termainl底...
-
Calling Gnuplot in C Download: callGnuPlot.c 懶惰是程式設計師的天性,所以才會創造出許多方便的程式,最近一直需要作圖分析,厭倦了Origin重複且繁複的設定,所以決定將要分析的資料使用c做分析後再由gnuplot畫出。 熟悉gnuplo...
No comments:
Post a Comment