さまざまなファイルからunsignedchar*型のバッファにデータを常に読み取ろうとしています。ただし、次のファイルを読み込む前にバッファをNULLに設定できないようです。
関連するコードは次のとおりです。
#include <stdio.h>
#include <fstream>
int
main (int argc, char** argv) {
FILE* dataFile = fopen("C:\\File1.txt", "rb");
unsigned char *buffer = NULL;
buffer = (unsigned char*)malloc(1000);
fread(buffer,1,1000,dataFile);
fclose(dataFile);
dataFile = fopen("C:\\File2.txt", "rb");
buffer = NULL;
fread(buffer,1,1000,dataFile);
fclose(dataFile);
system("pause");
return 0;
}
私が遭遇したエラーは、この行の2番目の出現です:fread(buffer、1,1000、dataFile);
私が得るエラーは次のとおりです。
デバッグアサーションに失敗しました!式:(バッファ!= NULL)
これは、基本的に次のfread.cの147行目を示しています。
/* validation */ _VALIDATE_RETURN((buffer != NULL), EINVAL, 0); if (stream == NULL || num > (SIZE_MAX / elementSize)) { if (bufferSize != SIZE_MAX) { memset(buffer, _BUFFER_FILL_PATTERN, bufferSize); } _VALIDATE_RETURN((stream != NULL), EINVAL, 0); _VALIDATE_RETURN(num <= (SIZE_MAX / elementSize), EINVAL, 0); }
NULLへのバッファポインタを取得する方法についてGoogleを実行し、さまざまな提案を試しましたが、どれも機能していないようです。誰でもそれをNULLに設定する正しい方法を明確にすることができますか?