为什么有的对象在使用时用A a;就可使用,有的却一定要new一个呢?? A a; 是在栈中分配内存,不需要你自己去释放。A* a = new A;是在堆中分配,,需要你自己用delete(a)来释放。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 new 的一定要自己是放掉没有new 的会被系统自动的释放 A a, 在栈上建对象,当程序超出a的作用域时,自动消毁A *pa = new A(); 在堆上建对象,当程序超出pa的作用域时,不自动消毁只有显示调用delete pa时,才能消毁对象。在栈上对象的内存空间是编辑的时候取得的,堆上的空间是程序运行时动态申请的所以在栈上建对象对在堆上建对象快!栈是一个后进先出的内存块,用来保存运行时函数调用的参数和局部变量;堆内存是程序运行时申请的,可以随机访问,没有先后顺序。 回答了gameboy999(正为女孩心烦中...无心编程)的问题,就知道了.... 如何利用宏编译控制三个工程 请问vs2008 里边mfc 项目如何调用activex 控件? 请教CRecordset::Open()?? 在LISTBOX中为什么显示乱码了 SDK MFC Windows编程先学哪个? 如何关掉警告信息? 高分求B+树的源代码 菜鸟问高手一个问题?关于字符串的输入问题! 写一个窗口类,如何连接数据库?生成可扩展的DLL 核心编程有段话没看懂,关于DLL的 release版和debug版有什么区别? 如何把一个RELEASE版本的程序还原成DEBUG 版本的,再设置成DEBUG好像不行
没有new 的会被系统自动的释放
A *pa = new A(); 在堆上建对象,当程序超出pa的作用域时,不自动消毁
只有显示调用delete pa时,才能消毁对象。在栈上对象的内存空间是编辑的时候取得的,堆上的空间是程序运行时动态申请的所以在栈上建对象对在堆上建对象快!栈是一个后进先出的内存块,用来保存运行时函数调用的参数和局部变量;堆内存是程序运行时申请的,可以随机访问,没有先后顺序。
回答了gameboy999(正为女孩心烦中...无心编程)的问题,就知道了....