您的位置:首页 > 编程语言 > C语言/C++

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;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
浮诩 发布了5 篇原创文章 · 获赞 2 · 访问量 334 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: