通知
すべてクリア
Topic starter
2002年6月23日 7:45 PM
MFC込みでVC++6で使っています。
コンパイル・リンクは通ったものの、
memcpy( ((char*)pPbBuffer+nPbBufferPos), lp->lpData, lp->dwBytesRecorded);
と言うコマンドでアクセスバイオレーションでハングです。
VOID LoadDataBlock(WAVEHDR* lp);と言うlpと言う変数の定義付けも含めて、
この当たりはそっくり、そのまま他の関数から既に実行時通ったものを持って来ているのに。
ハンドルされていない例外はXXX.C(WDMAUD.DRVにあります。)0XC000005
ACCESSVIOLATIONとのこと。
ウオッチで見ると、
((char*)pPbBuffer+nPbBufferPos)は読めているものの、
lpそのものや、
lp->lpData、lp->dwBytesRecordedは
CXX0017: Error: シンボル lp が見つかりません
と言うことdで値が表示されません。
どうすればいいのでしょうか?
2002年6月23日 9:43 PM
lpの値が不正なんでしょう。
関数呼び出し前の値から不正だったりしませんか?
とりあえず,memcpyが問題を持っていないのは確かです。
2002年6月24日 1:17 AM
アクセスバイオレーションの意味を調べましょう。
プログラマー的発想を身に付けましょう。(←書いている本人も耳がイタイ)
2002年6月24日 6:22 AM
領域侵害
例)5バイトしか確保していないところに10バイトコピーしようとしていませんか