读书人

C++中有类似C中的reallocate函数没解决

发布时间: 2012-02-10 21:27:42 作者: rapoo

C++中有类似C中的reallocate函数没
void Stack::Grow()
{
cout < < "Double stack from " < < capacity < < endl;
//分配新数组
int *arr_new=new int[2*capacity];
//复制所有数据项
for(int i=0;i <capacity;++i)
{
arr_new[i]=arr[i];
}
capacity=2*capacity;
//释放内存
delete [] arr;
arr=arr_new; //用新数组替换旧数组
}

在上面里我想新分配的内存接在以前所用的内存后面,就象C里面的reallocate

[解决办法]
没有。
realloc也没什么神奇的,也是重新申请,然后memcpy过去的。具体可以看源码。
所以不要觉得重新申请,然后copy的方法有什么不好。

[解决办法]
你的Grow已经完成了内存重新分配,
原有的值也已经正确拷贝,
不需要realloc了 ......

读书人网 >C++

热点推荐