所谓定位 new,就是预先分配一块内存,再将 new 出来的对象放入此内存块中的方法。通俗点说,就是在指定内存块中产生新对象。下面,就来向大家介绍定位 new 的使用方法。
工具/原料
编译器
一、准备工作
1
要使用定位 new,必须包含头文件
2
在这里,为了更加有效地说明定位 new 的使用方法,我们再定义两个自定义类:MyInt 和 MyChar。
二、使用方法
1
下面,我们通过分析一个具体的示例,来一步一步地教大家怎样使用定位new。首先,分配供定位 new 使用的内存块。
2
在分配的内存块中调用定位 new,构造两个 MyInt 对象,并为它们的数据成员赋值。在这儿请注意,之前我们分配的是 8 字节的内存,而我们的一个 MyInt 对象只需要 4 个字节,故可以构造两个。对象构造以后,我们便可以使用创建的对象。在这里,我们输出第一个对象的数据成员值。
3
当对象使用完不再需要时,我们必须调用它的析构函数来销毁它。
4
对象销毁以后,我们接下来可以继续使用分配的内存块再次构造其他类型的对象。比如说,我们再在 buffer 中构造数个 MyChar 对象,并给它们的数据成员赋值。对象构造完成后,我们输出第 4 个对象的数据成员值。
5
然后,我们再次销毁这些对象。
6
现在,我们的工作已经完成,不再需要之前分配的内存块,因此可将它释放掉。
7
下面是上述代码的运行截图。
注意事项
在对时间要求非常苛刻、需要进行大量分配-释放、分配-释放内存的程序中,由于使用定位new可省去不少内存分配回收的开销,故常常可以显著减少CPU占用,并且大大提高程序运行速度。
上一篇:NEW3DS基础使用教程?