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;
}