C++中使用new定义的变量和不使用new定义的变量区别
2015-06-12 15:04
337 查看
假设有一个类CTest,现定义两个CTest的对象
CTest t1;
CTest *t2 = new CTest();
1.本质不同
t1为类对象。
t2为类对象的指针。
2.作用域不同
t1作用域限制在定义类对象的方法中,当方法结束时,类对象也会被系统释放,不需要手工释放,安全不会造内存泄露。
t2作用域为全局,当程序结束时,需要使用delete进行手工释放,系统不会自动释放,如果忘记释放,容易造成内存泄露
3.内存中存放地址不同
t1存放在堆中。
t2存放在栈中。
CTest t1;
CTest *t2 = new CTest();
1.本质不同
t1为类对象。
t2为类对象的指针。
2.作用域不同
t1作用域限制在定义类对象的方法中,当方法结束时,类对象也会被系统释放,不需要手工释放,安全不会造内存泄露。
t2作用域为全局,当程序结束时,需要使用delete进行手工释放,系统不会自动释放,如果忘记释放,容易造成内存泄露
3.内存中存放地址不同
t1存放在堆中。
t2存放在栈中。
相关文章推荐
- C语言嵌入式编程
- c语言资格认证
- 如果new 一个对象,用free去释放,会有什么问题?
- 冒泡排序(C++语言描述)
- C++模板
- AHP-层次分析法(C++源码,附详细注释和样例)
- 自动化测试程序之一自定义键盘的模拟测试程序(C语言)
- C++ Primer 学习笔记_6_标准库类型 -- 命名空间using与string类型
- C语言的传值与传址调用
- C++【静态成员】
- chapter12test2
- 【深度探索C++对象模型读书笔记】【第5章】构造、析构、拷贝语意学
- 传智播客c/c++公开课学习笔记--邮箱账户的破解与邮箱安全防控
- 【深度探索C++对象模型读书笔记】【第5章】构造、析构、拷贝语意学
- C++11 中值得关注的几大变化(详解)
- 【leetcode c++】13 Roman to Integer
- C++ 鼠标模拟程序
- vs中c、c++屏蔽警告
- C/C++文件读取报错:stack around the variable 'x' was corrupted.
- [C++] MyList<T>