- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GlobalAlloc生成メモリの開放でエラー)
メモリの開放でエラーが発生する原因と解決方法
このQ&Aのポイント
- Cのプログラムにてメモリの生成と解放を行っている際にエラーが発生しており、原因と解決方法を知りたい。
- BUFFERがtrueの場合、特定の箇所でエラーが発生し、デバッグ実行で無視できるが、BUFFERがfalseの場合はエラーが発生し、無視できない。
- 開発環境はWindows 7 64bitでMicrosoft Visual Studio 2010を使用している。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>if( fscanf_s( fp, "%x", &buffer )!=EOF ) >fscanf_s( fp, "%X", &lpBuffer[i] ); http://msdn.microsoft.com/ja-jp/library/6ttkkkhh%28v=vs.100%29.aspx で…xは「int へのポインター。」となっています。 実際に渡しているのはshort int型へのポインタになっていますよね? じゃあ、余った分はどこに書き出しましょうか?? 故に… >Run-Time Check Failure #2 - Stack around the variable 'buffer' was corrupted. unsigned short intの変数bufferの後ろの領域に放り込んでみたり、 >ヒープが壊れていることが原因として考えられます。WinUSB_Control.exe または読み込まれた DLL にバグがあります。 GlobalAlloc()で確保した領域の後ろをぶっ壊してみたりしているのではないですか?
お礼
ご回答いただき,誠にありがとうございました. 原因はご指摘の通り,フォーマット指定子の箇所でして,これを修正して処理を実現することができました. おかげで,研究を前進することが出来そうです.