堆和栈,要怎么分配呢?
写关于指针的动态分配程序,但是对堆和栈还不是很清楚。
因为程序中要多次对多个长度不同的二维数组进行进行读写操作,所以想到用动态分配内存的方法来实现,但是由于这些二维数组的长度又各不一样,所以想到用一个函数来实现二维数组的内存的动态分配,但是总是实现不了,请各位不吝赐教!
=================================================
我的想法:
void allocate(int **array, int row, int col)
{
array= new int *[row];//分配的是指针数组
array[0] = new int [row*col];//分配连续内存空间
for (int i=1;i<row;i++) //每个指针再指定开始内存地址
array[i]=array[i-1]+col;
}
========
接下来,如果要动态分配指针,只要调用allocate函数就可以了,比如:
allocate(oldarray,row,col);
allocate(newarray,m,n);
======
问题是,函数调用的时候分配的是栈空间,函数调用结束之后就要释放了?而new分配的是堆空间,,这样操作的话是不是还是没办法成功实现呢?(调用是,oldarray和newarray都已经设置成全局变量了)。