メモメモ




a NAND b = NOT( a AND b )
は当然だけど、


NAND( a, b, c )((要するに3入力NAND))



(a NAND b) NAND c
ではダメで、


NOT( (a AND b) AND c )
が正解。

(別に中の()は不要だけど)

…というか、演算順序的に当たり前か…。





 何かデバイス解放中に例外が起こるんだけど、

ハンドルをローカルに保存しておくと大丈夫。

…何でかと思ったら、ハンドルの保存場所を解放した後にデバイス解放しようとしてた…orz

以下、実際の失敗例。


MMRESULT CloseWaveOut( WAVEBUF *wave )
{
// 解放後も使えるように
// 一旦ローカルに代入
//HWAVEOUT wave_out = wave->wave_out;

waveOutPause( wave->wave_out );
waveOutReset( wave->wave_out );

waveOutUnprepareHeader( wave->wave_out,
wave->header[0], sizeof(WAVEHDR) );
waveOutUnprepareHeader( wave->wave_out,
wave->header[1], sizeof(WAVEHDR) );

free( wave->data[0] );
free( wave->data[1] );
free( wave->header[0] );
free( wave->header[1] );
// 解放してしまっている
free( wave );

// ここでハンドルをまた使うのに…
return waveOutClose( wave->wave_out );
}