重新分配最简单的方法

Easiest way to realloc

我只是好奇重新分配内存的最简单方法是什么? 在我的教职员工中,我们使用此代码重新分配内存(示例):

if (dat = fopen(argv[1], "rb")) {
    do {
      p = fread(&art, sizeof(ARTIKAL), 1, dat);
      if (p) {
        if (n == c) niz = (ARTIKAL *)realloc(niz, (c *= 2) * sizeof(ARTIKAL));
        niz[n++] = art;
      }
    } while (p);
    fclose(dat);

我正在考虑使用倒带功能,但我不是 100% 确定如何实现它。

为什么在此示例中需要 rewind() 函数?

你的例子看起来不错,有一点可以改进:

if (dat = fopen(argv[1], "rb")) {
do {
  p = fread(&art, sizeof(ARTIKAL), 1, dat);
  if (p) {
    if (n == c) 
    {
       ARTIKAL *tmp = (ARTIKAL *)realloc(niz, (c *= 2) * sizeof(ARTIKAL));

       if (tmp == NULL)
       {
         printf("Not enough memory!\n")
         return 0;
       }
       else
       {
         niz = tmp;
       }

    niz[n++] = art;
  }
} while (p);
fclose(dat);

购买添加以上内容,您的代码更安全,因为 realloc returns NULL 当分配失败时 space,然后您会丢失数据。