C/C++内存四区
2020-02-16 17:40
232 查看
C/C++内存四区
***********************************************************************************************
一.代码区
- 代码区中主要存放程序中的二进制代码,属性只读
二.全局区
- 存放全局变量,静态变量,常量(字符串常量,const修饰的全局变量(const int number = 12;),函数名)
三.栈区
- 存放局部变量,函数参数,内存分配与释放都是由编译器自身完成
- 注意:不要返回局部变量的地址,因为局部变量在函数调用结束就会释放内存空间
四.堆区
- 堆区是不会在自动分配时做初始化的,包括清零,所以必须自己清零
代码示例(C语言)
/*定义图片结构体*/ //申请一个结构体变量内存 struct Camera_Pic *pic =(struct Camera_Pic *) malloc(sizeof(struct Camera_Pic)); //初始化结构体 memset(pic, 0, sizeof(struct Camera_Pic)); //释放内存空间 free(pic); //释放的是指针指向的内存空间,为了不让指针成为野指针,让其成为空指针 struct Camera_Pic *pic = NULL;
- C++中通过 new关键字申请内存空间(整型,数组)
int main(void) { //**申请一个整形数据类型空间,并初始化该变量为10** int *p = new int(10); //释放内存空间 delete p; //在堆区开辟一个数组(10个元素) int *arr = new int[10]; //初始化该数组 for(int i=0;i < 10;i++) { arr[i]=0; } //释放堆区数组 delete[] arr; return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
![](https://g.csdnimg.cn/static/user-reg-year/1x/1.png)
相关文章推荐
- c语言数字图像处理(二):图片放大与缩小-双线性内插法
- c语言数字图像处理(三):仿射变换
- c语言数字图像处理(五):空间滤波
- c语言数字图像处理(六):二维离散傅里叶变换
- c语言数字图像处理 4000 (七):频率域滤波
- c语言数字图像处理(八):噪声模型及均值滤波器
- c语言数字图像处理(九):边缘检测
- c语言数字图像处理(十):阈值处理
- MFC C++视频播放和视频的浓缩播放和检测目标接口
- MFC C++ 视频浓缩借口实现
- c语言中数组名代表数组首地址,它的值在运行期间可以改变吗?
- C++静态库与动态库
- SDK开发C++接口定义潜规则
- TQ招聘VC++程序员,应届生也可,关键有水平
- 在C++中,关于STL container(vector、list...)传入函数模板的问题
- C语言三种预处理功能
- 【C语言学习】从0到1(持续更新整理ing)
- VC++6.0新手如何使用MFC实现Bresenham算法画圆、画线
- C语言博客作业01--分支、顺序结构
- C语言博客作业02--循环结构