/*
代码段:用于存放代码
数据段:用于存放全局变量
栈空间:每调用一个函数就会给它分配一段连续的栈空间(存放函数中的局部变量),
等函数调用完毕后会自动回收这段栈空间(自动分配和回收)
堆空间:需要主动申请和释放(为了自由控制内存的生命周期、大小)
*/
#include<iostream>
using namespace std;
void test() {
//【1】
int *p = (int *)malloc(4);//申请4个字节,返回这4个字节首地址.强制转换
*p = 10;//p在栈空间指向堆空间4个字节,4个字节存放10
free(p);//回收释放
//【2】
int *p = new int;//申请1个int大小空间
*p = 10;
delete p;//回收释放
//【3】
char *p = new char[4];
delete[] p;
}
//堆空间初始化
void test2() {
int *p = (int *)malloc(4);
//【1】
*p = 0;
cout << *p << endl;
//【2】
//memset函数是将较大的数据结构(比如对象、数组等)内存清零比较快的方法
memset(p, 0, 4);//从p地址开始的4个字节中每一个字节都设置为0
cout << *p << endl;
//【3】
int *p0 = new int;
int *p1 = new int();
int *p2 = new int(5);
cout << *p0 << endl;//没有初始化
cout << *p1 << endl;//初始化为0
cout << *p2 << endl;//初始化为5
}
int main() {
//int age = 10;//存在栈空间
test();
getchar();
return 0;
}
C++内存空间
最新推荐文章于 2023-12-22 16:52:48 发布