开发管理之代码编码规范 联系客服

发布时间 : 星期六 文章开发管理之代码编码规范更新完毕开始阅读

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