memcpyでアクセス・バイオレーションって?!

[戻る]
Tabro 2002/06/23(日) 19:45:26
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で値が表示されません。

どうすればいいのでしょうか?

YuO [E-Mail] 2002/06/23(日) 21:43:23
lpの値が不正なんでしょう。
関数呼び出し前の値から不正だったりしませんか?

とりあえず,memcpyが問題を持っていないのは確かです。

駄犬 [E-Mail] 2002/06/24(月) 01:17:40
アクセスバイオレーションの意味を調べましょう。
プログラマー的発想を身に付けましょう。(←書いている本人も耳がイタイ)

wood 2002/06/24(月) 06:22:55
領域侵害
例)5バイトしか確保していないところに10バイトコピーしようとしていませんか

古いスレッドには追加発言できません。