私は c++ でアプリケーションを作成しており、Intel インスペクタを使用してメモリ プロファイリングを行っています。
ただし、潜在的なメモリの問題を見つけるためのメモリ プロファイリング テストで得たさまざまな結果について質問があります。
私はより安定したアプリケーションを作ろうとしていますが、いくつかの質問がありますが、現時点ではまだコードを調べすぎて、ちょっと混乱している基本的なものです。それらを明確にするのを手伝ってくれてありがとう。
- char buffer[30] をデフォルト値に初期化する必要がありますか?
- LPWSTR のデフォルトの値はどうあるべきか (NULL を試してみました)、メンバー変数への初期化されていないメモリ アクセスを訴えます。
- 構造体を初期化します。memset を使ってみました。それでも、プロファイラーは不機嫌そうに見え、初期化されていないメモリ アクセスに文句を言います。
1つのインスタンスは、呼び出し元クラスのコンストラクターで、ハンドルを次のように初期化しました
m_hidHandle = NULL; //member variable and an object of struct hid_device
その後、hid_write を呼び出します。
そしてそこに、 writeFile を呼び出す hid_write が含まれています (これは API クラス hid.c です)。
WriteFile(dev->device_handle, buf, length, NULL, NULL);
ここで、メモリアクセスが初期化されていないという苦情が表示されます。WrtieFile の API ドキュメントもチェックしてみました。メモリの問題について不平を言うために私が作っているものはまだ汚れています。
別のインスタンスは、メンバー変数を持っていることです
WINHTTP_CURRENT_USER_IE_PROXY_CONFIG m_pConfig;
コンストラクターで、構造体を NULL に初期化しようとしています。
memset( &m_pConfig, 0, sizeof(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG) );
初期化されていないメモリアクセスがありました。私も試してみました
//proxyConfig.fAutoDetect = false;
//proxyConfig.lpszAutoConfigUrl = NULL;
//proxyConfig.lpszProxy = NULL;
//proxyConfig.lpszProxyBypass = NULL;
まだ助けはありません。