RT
莫非,要重载他们的new函数?
我弱智,不懂。
这个没法控制吧
这个没法控制吧hellioncu 发表于 2011-04-16 18:42
我觉得这个完全可以嘛! 就是重载new运算符! 我正在写简单的例子。
是要重载new,可以限制用new在堆上分配阿。
好像连重载都不需要,默认情况下,你new的时候就是在堆上申请吧。
限制在栈上申请的话,就用这种方法。#include <new>
unsigned char buff[1024];X *ptr = new(buff) X;
下面是示例代码
复制代码
回复 6# nuying117
你这是限制栈上申请的?
回复 nuying117 你这是限制栈上申请的?rubylc_unix 发表于 2011-04-16 19:11
回复 nuying117
你这是限制栈上申请的?rubylc_unix 发表于 2011-04-16 19:11
那您觉得呢? 只是一个例子而已。 你真正想要达到啥效果?
禁止栈上分配, 可将析构函数私有。
automatic duration与static duration的对象都需要访问析构函数。若析构函数私有, 会产生编译错误。
不过 delete 也不能用了, 因为它也需要访问析构函数。需要另外提供:void release(T const* p) { destroy(p); operator delete(p); }
禁止堆上分配, 可将 T:: operator new 全部私有。
为什么要这样做呢? 仅仅是为了好玩? 还是有什么实际需求必须这样?
回复 9# OwnWaterloo
面试的题目!!!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(9)
莫非,要重载他们的new函数?
我弱智,不懂。
这个没法控制吧
我觉得这个完全可以嘛! 就是重载new运算符! 我正在写简单的例子。
是要重载new,可以限制用new在堆上分配阿。
好像连重载都不需要,默认情况下,你new的时候就是在堆上申请吧。
限制在栈上申请的话,就用这种方法。
#include <new>
unsigned char buff[1024];
X *ptr = new(buff) X;
下面是示例代码
复制代码
回复 6# nuying117
你这是限制栈上申请的?
那您觉得呢? 只是一个例子而已。 你真正想要达到啥效果?
禁止栈上分配, 可将析构函数私有。
automatic duration与static duration的对象都需要访问析构函数。
若析构函数私有, 会产生编译错误。
不过 delete 也不能用了, 因为它也需要访问析构函数。
需要另外提供:
void release(T const* p) { destroy(p); operator delete(p); }
禁止堆上分配, 可将 T:: operator new 全部私有。
为什么要这样做呢? 仅仅是为了好玩? 还是有什么实际需求必须这样?
回复 9# OwnWaterloo
面试的题目!!!