浅谈new与delete(1)
来源:互联网 发布:html5实战源码 编辑:程序博客网 时间:2024/06/06 11:03
new运算符的作用是完成动态内存分配和初始化工作。
对应的,delete运算符的作用就是完成清理与释放内存工作。
在类构造函数中,可以使用new为数据分配内存,并将内存地址赋予类成员。这样一来,类就可以处理长度不同的字符串,而不用在类设计时就提前固定数组的长度。
但是,如果对象包含成员指针,同时它指向的内存是由new分配的,则当释放用于保存对象的内存时并不会自动释放该对象成员指针指向的内存。因此,当在类构造函数中使用new类来分配内存时,就应该在类析构函数中使用delete来释放分配的内存。如此,才能在对象过期的时候自动释放其指针成员所指向的内存。
new/delete与malloc/free的异同:
1、首先,二者都可用于申请动态内存和释放内存。
2、前者是C++的运算符,后者是C/C++语言的标准库函数。对于非内部数据类型的对象而言,后者无法满足动态对象的要求(即创建对象的时候自动执行构造函数,对象过期的时候自动执行析构函数),由于后者不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加给它;而new/delete则能够做到这一点。
对应的,delete运算符的作用就是完成清理与释放内存工作。
在类构造函数中,可以使用new为数据分配内存,并将内存地址赋予类成员。这样一来,类就可以处理长度不同的字符串,而不用在类设计时就提前固定数组的长度。
但是,如果对象包含成员指针,同时它指向的内存是由new分配的,则当释放用于保存对象的内存时并不会自动释放该对象成员指针指向的内存。因此,当在类构造函数中使用new类来分配内存时,就应该在类析构函数中使用delete来释放分配的内存。如此,才能在对象过期的时候自动释放其指针成员所指向的内存。
new/delete与malloc/free的异同:
1、首先,二者都可用于申请动态内存和释放内存。
2、前者是C++的运算符,后者是C/C++语言的标准库函数。对于非内部数据类型的对象而言,后者无法满足动态对象的要求(即创建对象的时候自动执行构造函数,对象过期的时候自动执行析构函数),由于后者不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加给它;而new/delete则能够做到这一点。
0 0
- 浅谈new与delete(1)
- 浅谈new与delete
- 浅谈new与delete(2)
- 浅谈new和delete
- 浅谈new、delete
- new&delete 与 new[]&delete[]
- 浅谈new/delete与malloc/free的区别与联系
- 浅谈 C++ 中的 new/delete
- C++浅谈new和delete
- new与delete和new[ ]与delete[ ]
- 自定义operator new与operator delete的使用(1)
- new delete与malloc free之内存管理(1)
- C++中new、delete 与new[]、delete[]
- C++ new/delete 与 new[]/delete[] 详情
- new/delete与new[]/delete[]实现机制
- (malloc、free)与(new/delete)
- new与delete
- new与delete
- HDU 5113 Black And White 反省
- 领域驱动设计--第三天
- IBM MQ 客户端查看服务端消息的工具 WMQTool
- 原创DSC集成源码,加密版,只给手里有加密器的且需要的人!转载请注明鸿蒙原创!
- 【C++】编写一个简单的类。包含构造函数,成员函数等。
- 浅谈new与delete(1)
- 小记
- 心情随笔
- linux MMU分析+s5pv210 ubot的mmu分析
- 关于写出有效率的js代码的一点心得(1)
- 复制构造函数,赋值操作符重载之间的区别
- 线程sleep方法
- 大数的乘法(包括浮点数)
- 什么是Winsock WSAData