C++内存管理之结构体内存释放
来源:互联网 发布:金思维网络 编辑:程序博客网 时间:2024/06/04 21:39
C++中使用new和delete申请和释放内存空间,二者是成对出现的,缺一不可。使用new开辟的内存空间位于堆中,只能通过delete释放,这与局部变量不同,局部变量存储在栈中,变量生存周期结束后其内存也随之释放。
结构体中成员变量中存在指针的,其内存释放遵循从里向外的原则,即先释放成员变量的内存,然后在释放结构体指针。由于C++中允许结构体中使用构造函数和析构函数,构造函数对成员数据进行初始化,析构函数对内存进行清理。析构函数在对结构体进行释放时调用,首先释放析构函数中的成员变量内存,然后释放结构体指针内存。
struct _STU_FamilyInfo{int nAge;};struct _STU_StudentINFO{char* pstrName;int nAge;int nFamilyMember;_STU_FamilyINFO* pstuInfo;LPVOID lpExtInfo;_STU_StudentINFO(){pstrName = NULL;nAge = 0;nFamilyMember = 0;lpExtInfo = NULL;pstuInfo = NULL;};~_STU_StudentINFO(){if(pstrName){delete []pstrName;pstrName = NULL;}if(pstuInfo){delete []pstuInfo;pstuInfo = NULL;}};};_STU_StudentINFO* pstuStudent = new _STU_StudentINFO;pstuStudent->pstrName = "Sunny";pstuStudent->nAge = 27;pstuStudent->nFamilyMember = 2;_STU_FamilyInfo* pstuFamilyMember = new _STU_FamilyInfo[2];//...... 成员变量赋值pstuStudent->lpExtInfo = new char[256];memccpy(pstuStudent->lpExtInfo,"无其他说明",256)// 内存释放if( pstuStudent->lpExtInfo ){delete []pstuStuden->lpExtInfo;pstuStudent->lpExtInfo = NULL;}if(pstuStudent){delete pstuStudent;pstuStudent = NULL;}
成员函数的其他内存在调用结构体指针的释放函数时,自动调用析构函数进行内存释放,也就是其生命周期结束。
阅读全文
1 0
- C++内存管理之结构体内存释放
- 结构体内存释放
- C语言之结构体内存对齐
- 结构体内存内存分析
- 关于结构体内存分配及释放
- c++-结构体内存对齐
- C结构体内存对齐
- C结构体内存对齐
- C 结构体内存对齐原则
- c语言结构体内存分配问题
- C/C++结构体内存对齐
- C语言中的结构体内存对齐
- C 结构体内存对齐原则
- C/C++结构体内存对齐
- C/C++结构体内存对齐
- 关于C结构体内存分配
- C语言结构体内存对齐问题
- C语言结构体内存对齐
- As Easy As Possible 倍增法
- 关系的三类完整性约束
- JavaWeb开发之Maven工程(SSM框架)
- Python类实现动物种类的派生
- TFileStream用法
- C++内存管理之结构体内存释放
- JFinal解决IE浏览器下载问题
- Kali-Linux安装中文输入法
- 润乾V5如何实现第一次预览报表不展示数据
- Draw Something Cheat
- hdu 1202
- iOS 事件处理~简介
- RE:JAVA学习-HashMap用法
- 关于javaScript作用域