-1

char ポインター (*pData など) が NULL に初期化されずに宣言されているコード スニペットを見つけました。

char *pData, *pData2;
char string[10] =  "Hello"
pData2 = &string[0];
SomeFuntionToAssignValue(pData2, &pData);

SomeFuntionToAssignValue(char *pData2, char **pData)
{
    if (something)
    {
        *pData = pData2;
    }
    else if (something)
    {
        *pData = &pData2[some calculation]
    }
}

関数 SomeFuntionToAssignValue() を呼び出した後、pData を逆参照すると、いつでも「メモリ アクセス例外」エラーがスローされますか?

コンパイル中またはローカル テスト中 (ここでは、いつでも再ロードできるターゲットでテストが行​​われるため、通常はメモリ破損の可能性が減少します)、「メモリ アクセス例外」エラーは発生しませんでした。

しかし、ターゲットが少なくとも 1 週間リロードされなかったフィールド環境でのテスト中に、「メモリ アクセス例外」エラーがスローされました。

では、NOT を実行char *pData = NULLすると「メモリ アクセス例外」エラーが発生する可能性はありますか?

4

1 に答える 1