rt
解决方案 »
- com组件调用另一个组件,在C#中调用的问题
- DLL函数中的变量问题
- 求助:在media player屏幕上显示文件名字应该调用什么接口
- 基于ATL的对话框,怎么利用ONPAINT()函数在对话框上画图啊?
- 请教!打开Class Wizard时发生的“Parsing error”
- 最后的40分请熟悉odbc api的高手帮个忙
- MFC中的图片
- 怎样把一个tree放到listbox中?
- 谁有输入法设计资料的,高分相送。有详细源程序更好。
- CFtpConnection PutFile上传后的文件的时间戳变了
- const int *pint=new const int(1024); 为什么编译错误, c++primer就是这么写的.
- ie加载 控件 问题, 简单的问题
在预先定义的内存缓冲构造一个对象有许多有用的应用。例如,一个定制的垃圾搜集器能使用一个大的预分配内存缓冲,用户在这个缓冲中构造其对象。当不再需要这些对象时,它们的存储空间被自动收回。
这个技术在重视时间的应用中也很有用。在预先分配的内存缓冲构造一个对象是一种“时间常量”操作,之所以这样说是因为程序分配操作本身不会浪费宝贵的时间。同时也要注意当系统没有足够的内存时,动态内存分配可能失败。因此,对于重视任务的应用,预先分配一个足够大的缓冲有时是不可避免的。
许多应用需要在给定的时间构造不同类型的对象。想一想这样一个例子,一个GUI应用根据用户的输入,每次、显示不同的对话框,利用重复分配和释放内存,这个应用能提前创建一个内存缓冲,并能在这个缓冲里反复构造和销毁不同类型的对象。
C++提供了几种特点来方便实现在预先决定的内存位置构造一个对象的任务。在这些特点中,包括一个特殊形式的new操作符,叫做“定位new”(placement new)操作,以及一个显式的析构处理。实现方法如下:
第一步:分配一个足够的内存缓冲区,以便存放给定类型的对象。如果想要每次构造不同类型的对象,需要至少以最大的对象所占空间的大小分配一个缓冲。预分配的缓冲是在可用内存空间中分配的纯字符数组。 要#include<new.h>
这写法是什么意思啊?
用pbuf开辟的空间给p用,其实p并没有开辟内存