0

我正在阅读完整的文件,还有电影文件。然后我使用该缓冲区一次写入一个 50KB 的新文件。纠正我是错的吗?下面是示例代码:

FILE * pFile;
  long lSize;
  char * buffer;
  size_t result;

  pFile = fopen ( "myfile.bin" , "rb" );
  if (pFile==NULL) {fputs ("File error",stderr); exit (1);}

  // obtain file size:
  fseek (pFile , 0 , SEEK_END);
  lSize = ftell (pFile);
  rewind (pFile);

  // allocate memory to contain the whole file:
  buffer = (char*) malloc (sizeof(char)*lSize);
  if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}

  // copy the file into the buffer:
  result = fread (buffer,1,lSize,pFile);
  if (result != lSize) {fputs ("Reading error",stderr); exit (3);}

  /* the whole file is now loaded in the memory buffer. */

  // terminate
  fclose (pFile);
  free (buffer);
4

2 回答 2

1

在你有足够的可用内存之前没关系...但要注意,如果文件大于 4GB 并且你使用 32 位编译器。

于 2013-06-20T06:17:00.740 回答
1

流阅读器模型用于读取文件,因为文件大小没有限制,但是您可以使用的内存有限制。如果您的文件大小足够小以完全存储在内存中,则没有问题,但如果您正在读取媒体文件,例如 4GB+ DVD ISO,我认为您的程序会消耗太多内存并且无法在低规格计算机上运行。

于 2013-06-20T06:20:11.770 回答