2009-03 月份文章 顯示方式:簡文 | 列表

March 30,2009

在Relase模式下使用Debug Message

有時候會想在release模式追蹤一些數值,但是偏偏方便的Trace又只能在Debug模式下使用,這時候其實可以直接call OutputDebugString () 這個 function,就可以達到和Trace一樣的效果。

Posted by toki_kanno at 17:15回應(0)引用(0)Misc

March 24,2009

防止QuickTime因為程式crash而沒有正確釋放資源

寫QuickTime相關程式的時候,有時會因為要debug而常常不正常結束QuickTime相關的程式,但是因為沒有正確的釋放QuickTime的資源,有可能造成QuickTime再也開不起來(會卡死在InitializeQTML()裡)。

預防的方法是……

先開一個什麼事都不做的QuickTime Player在旁邊放著

原理不明,但猜測由於系統中還有至少一個QuickTime相關的程式開著,所以在正常或是不正常結束的時候不會真的去釋放QuickTime的resource,而不會造成一些resource被錯誤的釋放最後造成QuickTime無法開啟的情形。

Posted by toki_kanno at 9:39回應(0)引用(0)Quicktime

March 18,2009

少見的C記憶體管理function

calloc (count, size)
大致上用法和malloc差不多,不過它是用來方便allocate structure的array
要傳的參數是兩個,第一個參數是structure個數,第二個則是structure的大小

另外用這個function allocate完的記憶體是清除過的

offsetof (struct name, struct member)
這個函數超詭異的,用來算出struct中某個變數的位置……
在下面這個Quicktime的範例程式中第一次看見這兩個function的組合
主要用來 allocate 最後一個欄位是可變動長度structure array的structure

基本上這兩個function組合起來,大致上只是節省了一些programmer寫算式的時間

但是看起來就是比較帥(誤)

AudioBufferList * buflist = calloc(1, offsetof(AudioBufferList, mBuffers[numchannels]));

Posted by toki_kanno at 11:23回應(0)引用(0)
 [1]