首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问new可以代替malloc那么realloc可否替代

2012-03-25 
请教new可以代替malloc那么realloc可否替代我在用new申请一段内存,但内存要在运行中动态加长,请教如何实现

请教new可以代替malloc那么realloc可否替代
我在用new申请一段内存,但内存要在运行中动态加长,请教如何实现

[解决办法]
再new一次,原来的拷贝到新的,再删除原来的
[解决办法]
在原来的地址上是不可能扩大了,只能重新分配一个2倍的内存,然后再把以前的拷贝过来
[解决办法]
realloc 其实也是 malloc-> copy-> free(以前的空间)
[解决办法]
int* p = new int[100];

for (int i = 0; i < 100; i++)
p[i] = i;


// realloc

int* t = p;
p = new int[150];
memcpy(p, t, _msize(t));
delete t;
//

[解决办法]
// p - Pointer
// s - One Size(Byte)
// n - New Number
#define RENEW(p, s, n)\
{\
char* pNew = new char[s * n];\
memcpy(pNew, p, _msize(p));\
delete p;\
p = pNew;\
}
[解决办法]
可以使用placement new预分配,定位new,即可以呵呵^_^okokok
[解决办法]
如果你想用realloc,请先考虑用标准容器
[解决办法]
C++ 中的 new 是针对对象的,不是针对内存空间的。。。如果你有 N 个对象,自然有 N 个 sizeof (对象)大小的空间需要分配。一个对象不可能自己变大,所以 realloc 是不需要对应操作的。

vector <T> t;
t.reserve( new_size ); 会为新的对象预留存储空间

热点排行