无论是在C,还是在C++中,无论使用malloc,还是new,都可以用一个整型指针指向一个整型数据,虽然在编译时,此数据值未知,但在运行时,便可知晓。例如,
int a = 10; int *p = &a; int *P = (int*)malloc(sizeof(int) * (*p));
这样一来,便可不用固定数值分配内存。这也是直接分配内存和动态分配内存的区别。
如何分配一个可以“无限”增大连续空间的问题便产生了。在C和C++中,动态分配内存无法解决这个问题,因为其分配是一次性的。在C++中
,STL中vector的使用,就可使同一连续空间,无限增长。在C中,虽然没有直接“工具”,但可通过使用链表这样的数据结构来实现顺序扩充。