現在、8ビットASCIIモードでテキストファイルから文字列を読み込み、その文字列をwchar_tに割り当てる関数を作成しています。*0xC0000005:アクセス違反の読み取り場所0x00200074;関数から復帰するときに発生する
ここでは私が使用しています文字列をwstringに変換するには、atlconv.hおよびUSES_CONVERSIONマクロを使用します。コードは次のとおりです。
void CSampleProvider::getCopy(CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR *a, const string s) {
USES_CONVERSION;
wstring temp(A2W (s.c_str()));
a->pszLabel = new WCHAR(temp.length()+1);
if (!a->pszLabel)
return;
wcscpy_s(a->pszLabel, temp.size()+1, (LPWSTR)temp.c_str());
::MessageBox(NULL,s.c_str(),"getCopy",0);
return;
}
私は、デバッガを使って行を監視しました。それは正常に機能します(つまり、a-> pszLabelのコンテンツは期待通りですが、sのコンテンツと同じです)。返されたときにエラーが表示されました:
First-chance exception at 0x770f3067 in CPTest.exe: 0xC0000005: Access violation reading location 0x00200074.
Unhandled exception at 0x770f3067 in CPTest.exe: 0xC0000005: Access violation reading location 0x00200074.
これを解決する方法を知っている人はいますか?教えてください。あなたの答えは高く評価されている:)
おかげで、 Reinardus
EDIT:そうそう、型CREDENTIAL_PROVIDER_FIELD_DESCRIPTORは構造体であり、そのメンバーの1は、*
万が一あなたの文字列に 't'が入っていませんか? 「読書場所」は「s」の内容に依存するようですか? – Gabe
ええ、実際に私はそこに新しいWCHARを作るのを間違えました。答えを見てください、それは私の問題を解決します:) – user654894