- 博客(10)
- 资源 (4)
- 收藏
- 关注
转载 内存分配
<br />一、内存分配操作符new<br /> 新建一个MFC应用程序,无论是Win32 Console Application + MFC Support,还是MFC Application或者是MFC DLL。编译器为我们生成的代码最前面,在#include下面都会有下面这三行代码:#ifdef _DEBUG<br />#define new DEBUG_NEW<br />#endif<br /> 这三句话的意思是,如果是Debug版本,那么将new操作符定义为DEBUG_NEW。在a
2011-05-03 16:44:00 412
转载 call stack
一个编译器在面对函数的编译指令时,该生成哪些代码?首先,是保存函数返回值的地址,再次,函数的参数,最后,函数中局部变量保存在栈上。对相同函数的不同调用,局部变量有不同的存储空间,互不影响。
2011-04-28 22:10:00 1573
转载 vc调试
<br />难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。<br />我以前接触的程序大多是有比较成形的思路和方法,调试起来出的问题都比较小,最近这个是我自己慢慢摸索调试,接触了很多新的调试方法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下:<br /><br />VC调试篇<br /><br />设置<br />为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建
2011-04-28 15:49:00 450
原创 杂
<br />MFC消息循环<br />在类视图中右击要添加消息的类名,选择Add Window Message Handle,然后选择要添加的消息句柄,可以是windows自带的一些消息,如buttondown,buttonup等,也可以是在menu中添加的一些按钮的id号。然后在相应的头文件位置会自动生成消息的声明,在源文件中消息映射位置会自动生成代码,在源文件最后会依次生成函数头代码,可以自行在{}里编写你要该函数实现的内容.<br /> <br />构造函数和析构函数标志着类的开始和结束,没有返回值,
2011-04-28 15:48:00 449
转载 进程与线程
<br />关注这个问题源于我要把一个多个按钮多次触发的应用程序改写为一个单次触发一次完成的程序。<br /> <br /> <br />进程:用C,C++,JAVA等语言编写的源程序经过编译链接后生成可执行文件,交给计算机处理,处在运行状态的应用程序叫做进程。从用户的角度看,进程是应用程序的一个执行过程,从操作系统内核的角度看,进程是为应用程序的运行提供一个适当的环境。进程与应用程序的关系是:前者是处于动态条件下由操作系统维护的系统资源管理实体,后者是静止的存储于电脑硬盘上的一个静止文件。<br />在W
2011-04-25 11:09:00 348
转载 堆与栈
new的动态内存分配在堆(heap)上程序中定义的局部数据存储在栈上1.堆是大家共有的空间,分为全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候进行统一分配,运行过程中也可以向系统要额外的堆,但是用完之后要还给操作系统,否则会内存泄露。 2.栈是线程所独有的,用于保存其运行状态和局部变量。栈在线程开始的时候初始化,每个线程的栈互相独立。每个函数都有自己的栈,栈被用来在函数之间传递参数。操作系统在切换线程的时候会自动地切换栈。 3.
2011-04-25 10:14:00 360
原创 类重载
基类为Animal,子类为FishAnimal.h#include"stdafx.h"class Animal{public: Animal(int height, int weigh); ~Animal(); void eat(); void sleep(); virtual void breath();}:Animal.cpp#include"stdafx.h"#include"iostream.h"using namesp
2011-04-24 17:10:00 373
原创 程序中出现的堆释放问题
今天在调试运行时出现这个问题,弹出对话框:user breakpoint called from code at 0x7c92120e,在网上查了一下,发现这可能与堆的分配与释放有关系。参考的有关资料(http://blog.csdn.net/charles_3081523/archive/2010/11/09/5998014.aspx, http://blog.vckbase.com/hyj/archive/2006/06/28/21006.html )是这样说的: 这个问题看起来
2011-04-24 15:29:00 1265
原创 mfc 视图类、框架类、文档类、应用程序类之间的通信机制
<br />视图类要和文档类交换数据,通过在视图类中调用成员函数GetDocument()取得文档类指针。 <br />然后用它操作文档类。<br />视图对象是用来显示文档对象的内容,函数GetDocument()用于获取当前文档对象的指针m_pDocument.而函数OnDraw()是一个虚函数,负责文档对象的数据在用户视图区的显示输出。在向导生成的成员函数OnDraw()中调用了函数GetDocument().通过获取的文档类指针可 以在视图中显示文档内容。<br /><br /><br />1) 在
2011-04-21 20:44:00 3220
转载 引用
<br /><br /><br />下面我们要说一下,也是补充中最重要最需要掌握的内容,也是对传统函数操作的内存状态的一个补充学习。<br /> 下面我们来看一个例子:<br />#include <iostream> <br />#include <string> <br />using namespace std; <br /> <br />float c; <br />float test(float,float); <br />void main(int argc,char*
2011-04-19 21:39:00 484
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人