发布网友 发布时间:2023-03-21 19:39
共1个回答
热心网友 时间:2023-10-09 19:05
最起码你要知道new和malloc不能完全等同,new是要去调用构造函数的,malloc则不会。然后呢,你要明白realloc函数中其实现也是先分配新的数据块,复制数据,再释放旧的数据块。按照这种思路可以这样实现(假设你已经有一块内存A了):1.先new一块新的内存B,并且sizeof(B)>=sizeof(A);2.若上一步成功,则用memcpy将A中的内容复制到B,当然事先最好将B中的内容初始化为0,memset一下;3.若上一步成功,则delete[] A,然后A=B。如果处理的是非自定义类(即基本数据类型)对象的时候,这样就足够了。如果是类对象数组的话,对象的复制不能通过简单的memcpy完成,而指针的delete[],也会有潜在的问题。