动态数组,malloc,不知道数组个数时怎么动态创建数组?

/*这段是错的*/
		while (..) {
			 
			path = (int*)malloc(sizeof(int));
			path [i++] = t;
		...
		}
/*我想实现的是这种一个一个开辟空间的动态数组,因为并不知道有多少个数据*/

查到的都是知道数据总个数之后创建数组,或者在需要扩充数组大小的时候,开辟更大的空间,然后把原数组拷贝过去。

我能想到的是建立链表,两遍循环。

不知道还有没有其他更简单的办法创建动态数组,求教!

(刚看到 说不知道个数时没办法用malloc,只能用链表,或者vector?)

有realloc()函数可以重新申请大小。具体如下:(如有帮助,请采纳一下,谢谢。)

 1、 realloc()函数可以重用或扩展以前用malloc()、calloc()及realloc()函数自身分配的内存。

2、 realloc()函数需两个参数:一个是包含地址的指针(该地址由之前的malloc()、calloc()或realloc()函数返回),另一个是要新分配的内存字节数。

3、 realloc()函数分配第二个参数指定的内存量,并把第一个参数指针指向的之前分配的内容复制到新配的内存中,且复制的内容长度等于新旧内存区域中较小的那一个。即新内存大于原内存,则原内存所有内容复制到新内存,如果新内存小于原内存,只复制长度等于新内存空间的内容。

4、realloc()函数的第一个参数若为空指针,相当于分配第二个参数指定的新内存空间,此时等价于malloc()、calloc()或realloc()函数。

5、如果是将分配的内存扩大,则有以下3种情况:
        如果当前内存段后面有需要的内存空间,则直接扩展这段内存空间,realloc()将返回原指针。  
        如果当前内存段后面的空闲字节不够,那么就使用堆中的第一个能够满足这一要求的内存块,将目前的数据复制到新的位置,并将原来的数据块释放掉,返回新的内存块位置。
        如果申请失败,将返回NULL,此时,原来的指针仍然有效。

可以用malloc或者vector

vector:

//需要头文件vector.h	
    //定义容器num存入原始数据 
	vector<int> num;//定义一个vector数组array
	int number;
	while (1) {
		cin >> number;
		num.push_back(number);//每输入一个数字就把它添加到数组的最后
		if (cin.get() == '\n')//如果是回车符则跳出循环
			break;
	}
	int n = num.size();//返回数组长度为len
	//将容器转换为int数组buffer 
	int *buffer = new int[num.size()];
    if (!num.empty()){
        memcpy(buffer, &num[0], num.size()*sizeof(int));
    }