a = new int [6];
a = new int [8];这样的话,原来来的数据就没了怎么样才能申请,又不清空原来的数据呢?

解决方案 »

  1.   

    原来的数据没了?  你new出来的 没delete仍然还在堆中啊你保存下原来数据的指针不行么
      

  2.   

    一种方法是:
    a=(int *)realloc(a, sizeof(int)*8);
    不过注意realloc可能会移动起始位置,所以完整方法是:
    int *temp = a;
    a = (int *)realloc(a, sizeof(int) * 8);
    if(a != NULL)
    {
        // 要把原来的数据拷贝到新的地方去
        memcpy(a, temp, sizeof(int)*length);  // length用来保存长度
        length = length + 8;
    }
    else
    {
        printf("内存不足,分配失败!");
        .....
    }
    另外一种方法是使用链表,逐个把a存其来,这个等你学数据结构再说。
      

  3.   

    动态数组,vector<int> ...
      

  4.   

    vector  已经实现了你的功能