abort exit return 三者区别
2010-05-26 22:38
204 查看
在华中科技大学《C++程序设计实践教程》中,谈到这一区别:
按面向对象的思想,程序也是一个对象,因此,程序也有生有死。
C++在编译一个程序后,这样执行程序:(1)执行开工函数,此时对
程序初始化,主要指全局变量初始化。(2)调用main函数。(3)执行
收工函数,对全局变量(对象)进行析构。所以如下程序会有输出,
尽管main函数为空:
#include <stdio.h>
int x=printf("ABCDEF");
void main( ){ }
现在,来谈abort[/b]和exit以及return的区别。return返回,可析构
main或函数中的局部变量,尤其要注意局部对象,如不析构可能造成
内存泄露。exit返回不析构main或函数中的局部变量,但执行收工函数,
故可析构全局变量(对象)。abort[/b]不析构main或函数中的局部变量,也不
执行收工函数,故全局和局部对象都不析构。
所以,用return更能避免内存泄露,在C++中用abort[/b]和exit都不是好
习惯。
请给分。
按面向对象的思想,程序也是一个对象,因此,程序也有生有死。
C++在编译一个程序后,这样执行程序:(1)执行开工函数,此时对
程序初始化,主要指全局变量初始化。(2)调用main函数。(3)执行
收工函数,对全局变量(对象)进行析构。所以如下程序会有输出,
尽管main函数为空:
#include <stdio.h>
int x=printf("ABCDEF");
void main( ){ }
现在,来谈abort[/b]和exit以及return的区别。return返回,可析构
main或函数中的局部变量,尤其要注意局部对象,如不析构可能造成
内存泄露。exit返回不析构main或函数中的局部变量,但执行收工函数,
故可析构全局变量(对象)。abort[/b]不析构main或函数中的局部变量,也不
执行收工函数,故全局和局部对象都不析构。
所以,用return更能避免内存泄露,在C++中用abort[/b]和exit都不是好
习惯。
请给分。
相关文章推荐
- analytical model、numerical model 和 empirical model 三者的区别
- border:0 none,border:none;,border:0;三者之间的区别
- Java SE、Java EE、Java ME三者的区别
- 在php中public、protected、private三者之间的区别
- Class.forName()、Class.forName().newInstance() 、New 三者区别!
- break,continue,return三者的区别
- return、exit和abort的区别
- 【2014年12月4日】【每日一问】SOAP、WSDL、UDDI这三者有什么区别和联系?
- php中mysql_fetch_assoc ,mysql_fetch_array,mysql_fetch_row 三者的区别
- python中高阶函数filter,map,reduce三者的区别
- ArrayList.LinkedList.Vector三者之间的区别与联系
- 判断一个指针是否为空,abort()、assert、抛出异常的使用、ASSERT与VERIFY宏的区别
- 静态代码块,构造代码块,构造方法三者的区别与联系
- const char *p,,char const *p,,cahr * const p 三者之间的区别
- ContentProvider,SQLiteOpenHelper,SQLiteDatabase三者之间的区别和联系
- C/C++:memmove、memcpy、strcpy三者的区别
- display:none 与 opacity:0 与 visibility:hidden 三者的区别
- @NotNull 、@NotBlank、@NotEmpty三者的区别
- String、StringBuffer、StringBuilder三者区别
- C#中数组、ArrayList和List三者的区别