C++内存空间

/*
代码段:用于存放代码
数据段:用于存放全局变量
栈空间:每调用一个函数就会给它分配一段连续的栈空间(存放函数中的局部变量),
        等函数调用完毕后会自动回收这段栈空间(自动分配和回收)
堆空间:需要主动申请和释放(为了自由控制内存的生命周期、大小)
*/

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值