1

私が使うとき

  fstat(fileno(file), &st); //struct stat st

  buf = malloc(fsize);   //size_t fsize

  fread(buf, 1, fsize, file);

mallocのようにfsize * sizeof(size_t)大きなスペースを割り当てる必要があるため、私は本当に疑問に思っていますが、のようにアクセスしようとするbuf + 8*fsizeと、範囲外になります。

ただし、buf+fsizeは正しい場所、ファイルの終わりにあり、アドレスを計算したところです。malloc のように、私にはfsize * sizeof(char)大きなスペースが返されます。

だから、どこが間違っているのか、どんな助けも感謝しています。

4

1 に答える 1

2

あなたのコードは言うmalloc(fsize)が、あなたが望むのはmalloc(fsize * sizeof(size_t)). このmalloc関数は、割り当てるバイト数を受け取ります。を格納するためにメモリを使用することを知る方法はありませんsize_t

更新:質問を誤解した可能性があります。質問者が上記のコメントで提起された質問に回答したら、この回答を更新します。

于 2014-01-05T02:10:58.303 に答える