发布时间 : 星期一 文章开发管理之代码编码规范更新完毕开始阅读
5. 内存管理
5.1. 内存分配方式
有三种分配方式
(1) 静态存储区分配,内存在编译的时候已经分配好,这块内存在整个运行期间
都存在,例如全局变量,static变量
(2) 在栈上创建,执行函数时,函数内部局部变量都在栈上创建,函数执行结束
时,这些存储变量自动被释放
(3) 从堆上分配,亦称动态内存分配,程序运行时用malloc或new申请任意多
少的内存,程序员自己负责在何时用free或delete释放内存
5.2. 常见的内存错误
(1) 内存分配未成功,却使用了它。对于函数参数,用asset(p!=NULL)检查,如
果是malloc或new来申请内存,应用if(p==NULL)或if(!p==NULL)来处理
(2) 内存分配虽然成功,但是尚未初始化就引用它,内存的默认值并不一定为空 (3) 内存分配成功,也初始化了,但越界了
(4) 忘记了释放内存,造成内存泄漏释放了内存却继续使用它
5.3. 规则
(1) 用malloc或new申请内存后,应立即检查指会值是否为NULL,防止使用
指针值为NULL的内存
(2) 不要忘记为数组和动脉内存赋值,防止将未被初始化的内存作为右值使用 (3) 防止数组或指针的下标越界
(4) 动态内存的申请与释放必须配对,防止内存泄漏
(5) 用free或delete释放内存之后,立即将指针设置为NULL,防止产生“野指
针”
野指针的三种来源:
A. 指针变量被创建时没有初化
B. 指针被free或delete后没有被赋NULL C. 指针不在有效期
(6) 用new创建动态数组,必须用delete[],如:
obj *objects=new obj[100]; delete [] objects;
(7) 用new,delete代替malloc、calloc和free
6. MFC控件的命名规则
CButton CComboBox CDialog
m_btnValue m_cmboValue; CDlgServerstatus;
CDateTimeCtrl CEdit
CListBox CListCtrl
COleDateTime CProgressCtrl
CRichEditCtrl CScrollBar CSliderCtrl CStatic
CTabCtrl CTreeCtrl
m_dtcValue; m_editValue; m_lsbValue; m_lscValue;
m_dtValue; m_prgValue;
m_reditValue; m_scrValue; m_slidValue; m_staValue; m_tabValue; m_treeValue;
7. MFC资源的命名规则
7.1. Dialog
第一级:IDD_MAIN_QUERY 第二级:IDD_ QUERY_MULTI
第三级:IDD_ QUERY_MULTI_CONFIG
7.2. Menu
IDM_FILTER
7.3. ToolBar
IDT_QUERY
7.4. Cursor
IDC_ZOOM
7.5. Bitmap
IDB_LOGO_CY
7.6. Icon
IDI_LEFT