VC中CEdit *pEdit=new CEdit与CEdit edit的区别

来源:百度知道 编辑:UC知道 时间:2024/06/25 05:04:54
比如想动态创建一个编辑框控件时。
CEdit *pEdit=new CEdit;
pEdit->Creat(...);
可以成功显示出来,SPY++也可以查到该控件。
可是,如果用
CEdit edit;
edit.Creat(...);
就无法显示,SPY++也找不到该控件。

所以就有些疑问,VC中CEdit *pEdit=new CEdit与CEdit edit的区别.

1.很想看看你create里面的参数是什么,动态加载和静态加载没有什么区别的。
2.CEdit edit你使用这个的时候是将其申明为全局的么,如果不是的话,在相应程序段结束的时候,它已经被释放掉了。而如果使用CEdit *pEdit=new CEdit的话,在相应的地方,会应为你没有用delete pEdit去释放,所以它能显示。当然后者是属于内存泄漏了。

基本功很重要!

CEdit edit 是实例化一个编辑框的对象。
CEdit *pEdit = new CEdit
是先给CEdit分配一块内存,将其地址返回给pEdit
用 CEdit edit 无法显示可能是你把CEdit edit定义为局部变量,所以函数结束时这个对象就销毁了,你换成全局变量试试。
用 new 因为分配了一块内存, 所以它的寿命和程序是一致的,当然要记得用delete 释放它。