size_t型の場合にスローされた理由:行の下 bad_alloc()例外は、私は、コードの下の部分に取り組んでいると私は、このコードを実行していたとき、私は<code>std::bad_alloc</code>例外を取得しています
int _tmain(int argc, _TCHAR* argv[])
{
FILE * pFile;
size_t state;
pFile = fopen("C:\\shared.tmp", "rb");
if (pFile != NULL)
{
size_t rt = fread(&state, sizeof(int), 1, pFile);
char *string = NULL;
string= new char[state + 1];
fclose(pFile);
}
return 0;
}
これが原因
例外がスローされる:string = new char[state + 1];
これはどうして起こりますか?これをどうすれば解決できますか?
割り当ての前に状態を印刷して結果を投稿することはできますか? –
デバッガ、ブレークポイント、およびウォッチウィンドウはおそらく、割り当てようとしているものの大きさを伝えます。私のクリスタルボールはサイズが「size_t」と一致しない形式で格納されていると伝えますが、とにかく 'int'のサイズを読んでいるので、とにかくそれを扱いますあなたのプラットフォーム上の 'size_t 'はおそらくそれぞれ32ビットと64ビットです。ああ。 – WhozCraig
エンディアンについては心配しています。このコードは整数型の内部表現をバイト単位で構成するのではなく、直接読み込むためです。 OPは彼が値 '0x000000FF'の整数を読み込んでいると思うかもしれませんが、代わりに' 0xFF0000000'を得ているかもしれません! – Hurkyl