#include <stdio.h>
 #define DEFAULT_CAPACITY 5

这是我的类型定义结构-不允许我更改此结构。
typedef struct Vector
{
   int items[DEFAULT_CAPACITY];
   int size;
}*VectorP;

*VectorP已经是一个令我困惑的指针了。
接下来我初始化向量,调用malloc
void initVector(VectorP vector)
{
      vector = (VectorP)malloc(DEFAULT_CAPACITY * sizeof(VectorP));

      if(vector == NULL)
       {
           fprintf(stderr, "Memory allocation failed!\n");
           exit(1);
       }

   (*vector).size = 0;        //Does this change the size on the main function?
   vector->items[0] = 1;      // And this one too?
 }

我的主要功能是:
int main()
{
  // Create a new vector ... check size
    struct Vector vector;
    VectorP v1 = &vector;
    initVector(v1);
    fprintf(stderr, "\nThe size is (0) %i\n", v1->size);

    printf("items[0] = %i ", v1->items[0]);
}

问题是函数initVector没有改变大小或项。如何更改在main中创建的向量的大小?

最佳答案

在为initVector分配内存的函数vector中,这将覆盖它以前的值(传入的参数),因此它不会在main中修改vector。这也意味着这里有内存泄漏。
要解决这个问题,只需删除initVector中的内存分配行。

void initVector(VectorP vector)
{
     vector->size = 0;       //the same as (*vector).size
     vector->items[0] = 1;
}

07-26 09:35
查看更多