C++内存管理之二--------控制c++的内存分配
来源:互联网 发布:js复杂数据类型有哪些 编辑:程序博客网 时间:2024/06/14 19:42
C++内存管理之二--------控制c++的内存分配
一个防止堆破碎的通用方法是从不同固定大小的内存池中分配不同类型的对象。对每个类重载new和delete就提供了这样的控制。
1.重载全局的new和delete操作符
void * operator new(size_t size) {void *p = malloc(size);return p;}void operator delete(void *p) {free(p);}这段代码可以代替默认的操作符来满足内存分配的请求。也可以对单个类的new和delete操作符重载。这使你能灵活的控制对象的内存分配。
class TestClass {public:void * operator new(size_t size);void operator delete(void *p);};void TestClass::operator delete(void *p) {free(p);}void *TestClass::operator new(size_t size) {void *p = malloc(size);return (p);}通过重载new和delete操作符的方法,你可以自由地采用不同的分配策略,从不同的内存池中分配不同的类对象。
2.为单个的类重载new[]和delete[]
class TestClass {public:void * operator new[](size_t size);void operator delete[](void *p);};void TestClass::operator delete[](void *p) {free(p);}void *TestClass::operator new[](size_t size) {void *p = malloc(size);return (p);}需要注意的地方:对于多数C++的实现,new[]操作符中的个数参数是数组的大小加上额外的存储对象数目的一些字节。在你的内存分配机制要重要考虑这一点。
- C++内存管理之二--------控制c++的内存分配
- C/C++内存分配管理
- C/C++内存分配管理
- C/C++内存分配管理
- C的内存分配
- 内存分配之c/c++
- c的内存分配函数
- C的内存分配问题
- C程序的内存分配
- c的堆栈,内存分配
- C UDR 的内存分配
- c的内存分配问题
- C程序的内存分配
- c 程序的内存分配
- C语言的内存分配
- c/c++的内存分配
- C语言的内存分配
- c语言的内存分配
- iphone开发错误总结-警告篇
- Linux-PAM简介
- jquerymobile-6 inset list和list divider 添加数字气泡 缩略图和icon list提交搜索过滤
- Java GroupLayout使用方法和实例
- 飞凌ok6410开发板Linux使用RTC时钟
- C++内存管理之二--------控制c++的内存分配
- gweb的安装略微复杂
- 难吗
- windows 下Git 源代码报错问题
- 数据库锁表,解除锁表
- C++ 回调函数说明 传函数指针
- 关于ios 推送功能的终极解决
- 修改sqlserver2008数据库的排序规则
- linux驱动子系统--MTD