解决方案 »
- 对话框控件中的组合框(下拉选项
- 请教用psapi和toolhelp32snap写的进程管理器问题
- 怎样判断操作系统为vista?
- 请教,在vc中如何查找一个函数的定义?
- 怎么取BIOS ID? 用 SetSelectorbase?
- .net到底指什么??
- 当我新建一个基于CObject类的新类的的时候,基类选项里没有CObject或者Cobject?
- 请问在使用ADO的情况下,如何将数据库中的表映射成一个记录集
- 那们大虾用过guidgen.exe?它的四个选项都是什么意思?
- 一个win2000局域网的问题,来看看吧.
- MFC遍历文件FindNextFile(),怎样控制文件遍历的顺序?
- mfc CRichEdit findtext() 查找 中文字符串,在某些电脑上会有问题,始终返回-1,找中文肿么办
析构函数何时被调用?这是C++里很基础的知识,搞清楚了,你就不会有这样的疑问了
析构函数何时被调用?这是C++里很基础的知识,搞清楚了,你就不会有这样的疑问了按照我的理解,如果是在一个函数中定义一个GDI+对象,当函数退出的时候,这个对象的生存期也就结束了,它会自动调用析解函数,释放内存.
听说Bitmap类并没有释放内存的析构函数,但是Bitmap类是继承自Image类,当派生类对象生存期结束时,先调用派生类析构函数,再调用基类析构函数,也就是说,它仍然可以释放申请到的内存资源.如果这样理解的话,在函数中创建的GDI+对象,是不需要手工释放内存的,函数退出时系统自动释放.包括象(GDI+中的画笔,画刷,字体,字体风格还有象PointF, RectF等等,都是不需要自己手工释放内在的,是吗?不知道这样理解对不对?
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)