C++中的动态空间扩充方法

    由于C++中没有C语言中的realloc的函数,对存储空间的动态增长的再分配,就此写一个模板进行替代之:­

template<typename T> T* realloc( T* &p, size_t oldsize, size_t newsize ) { if ( oldsize > newsize ) { return NULL; } T* tmpmemery=new T[newsize]; memset( tmpmemery, 0, newsize ); memcpy( tmpmemery, p, oldsize*sizeof(T) ); delete []p; return p = tmpmemery; } int main() { int* p = new int[128]; for( int i=0; i < 128; i++ ) p[i] = i; realloc( p, 128, 256 ); delete []p; return 0; }

代码本身没有什么,关键是思路:

首先、判断要申请的空间是否比原来的大;

然后、用new申请一个更大的内存空间,并将其置空;

接着、将原来指向的内存空间的内容进行拷贝到新申请的空间;

最后、将原来的空间进行释放,原来的指针指向新申请的空间,返回即可。

你可能感兴趣的:(C++,c,null,delete,存储,语言)