9.2.10 存储方案和动态分配(3)
出于简化的目的,这个示例使用两个静态数组来为定位new运算符提供内存空间。因此,上述代码从buffer1中分配空间给结构chaff,从buffer2中分配空间给一个包含20个元素的int数组。
熟悉定位new运算符后,来看一个示例程序。程序清单9.10使用常规new运算符和定位new运算符创建动态分配的数组。该程序说明了常规new运算符和定位new运算符之间的一些重要差别,在查看该程序的输出后,将对此进行讨论。
程序清单9.10 newplace.cpp
|
下面是该程序在某个系统上运行时的输出:
|
5.程序说明
有关程序清单9.10,首先要指出的一点是,定位new运算符确实将数组p2放在了数组buffer中,p2和buffer的地址都是00FD9138。然而,它们的类型不同,p1是double指针,而buffer是char指针(顺便说一句,这也是程序使用(void *)对buffer进行强制转换的原因,如果不这样做,cout将显示一个字符串)同时,常规new将数组p1放在很远的地方,其地址为006E4AB0,位于动态管理的堆中。


