怎么“动态申请”“创建动态数组”?

来源:百度知道 编辑:UC知道 时间:2024/07/15 22:12:08
请给出一个例子,介绍怎样怎样创建动态数组或者所谓的动态申请?有时候自己创建了一个很大的数组例如ARRAY[1000][1000],在WINDOWS下就不能执行,在ACM下更不行会溢出,怎么解决这个问题,据听说用动态数组就可以,但是不太会,请教大家!

动态数组 new malloc realloc等;
vector,把用户的输入都 push_back 就行了。
参考如下:
假设是char型
char*p,*q;;
int a=1;
p=(char*)malloc(a);
while
{
a++;
q=p;
p=(char*)realloc(q,a);//通过realloc扩大p的空间,并把新的地址赋值给p。;新数组大小加1
if(结束条件)
break;
](char*)realloc(q,20);//A行,通过realloc扩大p的空间,并把新的地址赋值给p。
//

c++的语法:
int *ARRAY = new[1000][1000];
就可以建立一个动态的数组

delete []ARRAY;
用了之后要释放空间;
-----------------------------------------------
c语法:
申请空间
char *Array = (char*)malloc(1000*1000*sizeof(char));
用完释放空间
free(*ARRAY);

ARRAY[1000][1000]失败是栈不够大的原因。如果不修改栈大小,用动态数组,应该这样用:

int** array;//(int 可以换成其它的类型)
array = (int**)malloc(1000*sizeof(int*));
for(int i=0;i<1000;i++)
    array[i] = (int*)malloc(1000*sizeof(int));
//这里使用array,使用方法跟你的那个ARRAY完全一样。
for(int i=0;i<1000;i++)
    free(array[i]);
free(array);