C++学习笔记:New和Delete
来源:互联网 发布:9377皇图坐骑进阶数据 编辑:程序博客网 时间:2024/04/26 07:16
C++学习笔记:New和Delete
C语言操作内存的方式
下面是一段典型的内存分配方式:
MyType *pType = (MyType *)malloc(sizeof(MyType));
if (pType == NULL) error;
Initialize(&MyType);
在以上的处理中,涉及到了四个环节:
1. 使用sizeof指定内存大小;
2. malloc返回的值是void* 类型,需要进行类型转换;
3. 需要检查是否分配成功;
4. 需要对分配的内存进行初始化;
C++ 的处理方式
C语言内存分配时需要注意的东西太多,容易出错。C++在可用性、安全性方面进行了改进。C++使用 new/delete 进行内存的分配、释放。典型的应用方式如下:
MyType *pType = new MyType
从形式上看,比C语言简介了不少。
New操作完成两件事:1) 根据类型信息分配内存;2) 调用类的constructor函数完成初始化。
C++ 中不需要显式的指示内存的大小,也不需要显式的执行初始化操作。这方便了代码的编写,也减小了出错的可能性。
使用new/delete的注意事项
1) 避免对void* 类型指针执行delete操作。由于void* 没有类型信息,执行delete操作时只能释放内存,不会调用deconstructor函数。
2)数组的操作:
MyType *pType = new MyType[100];
Delete []pType;
如果使用 "delete ptype"也可以正确释放内存,但是只会调用数组中第0个成员的deconstructor。3) new/delete 可以重载,可以定义在global范围,或class中;
4) 参数的传入: new(23) int;
5) placement new的使用,可以通过将内存的地址传入在制定的内存上创建对象;例如:
void *p = malloc(sizeof(CA));
CA *pA = new(p) CA;
pA->~CA(); // notice: only object is destroyed, memory is kept;
free(p);
6) Delete可以删除0;
7) 类的内存管理成员函数隐含是静态的;
- 学习C++(operator new 和 operator delete)
- C++学习笔记:New和Delete
- vc++学习笔记new和delete
- C++学习笔记--重载new和delete
- C++:new和delete
- new和delete【C++】
- 《Effective C++》学习笔记条款16 成对使用new和delete时要采取相同形式
- 【C++】学习小笔记系列-1-new和delete的实际过程。
- C++学习笔记---new/delete
- C++new和delete重载
- [C++]定制new和delete
- C++-关键字new和delete
- 【学习】C++(1) 指针 new 和delete
- 每日学习笔记(名字空间,new和delete)
- 学习笔记II——new/delete和malloc/free
- 【C++学习笔记】一个使用new和delete的实例
- 【C++】new delete & new[] delete[]
- new, delete 和 new[] delete[]
- 调试之剑:从堆里抢救丢失的博客文章
- 右键注册表修改
- MyEclipse DateBase Explorer 配置SQLserver2000时出错的解决方法
- Difference between Property and Indexer
- ORA-06413错误原因
- C++学习笔记:New和Delete
- Delphi在Vasta/win 7下获取权限
- C++学习笔记:Polymophism
- C++ 迭代器失效
- JSP连接各类数据库方法大全
- oracle常用问题1000问
- 终端安全 网络准入,主动防御——终端安全面面观
- 关于子线程中不能调用updateallviews
- 腾云驾物:云计算/物联网QQ群