c++基础之用new和delete申请内存与创建对象
2017-10-29 16:06
489 查看
malloc与free
注意:malloc申请而来的只是内存,严格地说并不是对象。
在c++中,用new/delete操作符取代malloc和free
申请一个对象:
注意:
1.new的返回值直接就是对象指针,不用再转换
2.new的时候可以设置初始值 new int(12);
申请多个对象:
例如:申请1024个int对象:
int* p=new int[1024];
释放:
delete[] p;
注意:
1.用[]指定对象个数;
2.如果new的时候用了[],则释放的时候也需要使用[]来释放;
使用原则与malloc/free类似,都是向内存管理器MM来申请内存。
1.用new申请的内存,必须用delete释放
2.用new[]申请的内存,必须用delete[]释放
3.用完之后,及时释放
注意:和free一样,delete之后指针所指向的内存不可再用
对于claas类型,必须用new/delete来创建,销毁。malloc/free无法胜任。
动态创建一个对象:
Circle* c=new Circle();//默认构造函数
Circle* c=new Circle;//不加括号也可以
Circle* c=new Circle(1,1,4);//传构造函数
释放对象:
delete c;
注意:new的时候构造函数被调用,delete的时候析构函数被调用
注意:malloc申请而来的只是内存,严格地说并不是对象。
在c++中,用new/delete操作符取代malloc和free
申请一个对象:
int* p=new int; 释放 delete p;
注意:
1.new的返回值直接就是对象指针,不用再转换
2.new的时候可以设置初始值 new int(12);
申请多个对象:
例如:申请1024个int对象:
int* p=new int[1024];
释放:
delete[] p;
注意:
1.用[]指定对象个数;
2.如果new的时候用了[],则释放的时候也需要使用[]来释放;
使用原则与malloc/free类似,都是向内存管理器MM来申请内存。
1.用new申请的内存,必须用delete释放
2.用new[]申请的内存,必须用delete[]释放
3.用完之后,及时释放
注意:和free一样,delete之后指针所指向的内存不可再用
对于claas类型,必须用new/delete来创建,销毁。malloc/free无法胜任。
动态创建一个对象:
Circle* c=new Circle();//默认构造函数
Circle* c=new Circle;//不加括号也可以
Circle* c=new Circle(1,1,4);//传构造函数
释放对象:
delete c;
注意:new的时候构造函数被调用,delete的时候析构函数被调用
相关文章推荐
- C++用new和不用new创建类对象区别 内存
- C++在堆上申请和释放内存 - new & delete
- c++中优化内存分配:new/delete操作符;allocator类对象的使用;operator new/operator delete函数及定位new表达式
- malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存
- C++基础:动态内存开辟new_delete
- C++基础-new和delete单个对象
- C++创建对象的两种方法(C++用new和不用new创建类对象)
- C/C++ 基础-free 和 delete 释放内存(转)
- 在C++中,为了让某个类只能通过new来创建实例(即如果直接创建对象,编译器将报错),怎样做?
- 【ThinkingInC++】64、重载new和delete,来模仿内存的分配
- 如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉
- C++用new和不用new创建类对象区别
- C++用new和不用new创建类对象区别
- C++创建对象时用NEW 和不用 NEW的区别和概念
- C++基础——new与delete
- C++中new和delete来创建和释放动态数组
- C++用new和不用new创建类对象区别
- JavaScript基础 使用new Date() 创建当前日期时间对象
- C++用new和不用new创建类对象区别
- C++用new和不用new创建类对象区别