C++基础(六)--内存模型/动态分配内存new和delete

  1. 内存分为内核空间和用户空间,内核空间由操作系统管理,与程序员没什么关系,我们写的c++程序在用户空间。

            用户空间分为栈、堆、数据段和代码段。
    栈区存放了程序中的局部变量、函数参数和返回值;
    堆区存放了程序中动态开辟内存的变量;
    数据段存放程序中的全局变量和静态变量;
    代码段存放了可执行程序的二进制代码和常量;


     
  2. 栈和堆的区别
    (1)管理方式不同:栈是由系统自动管理的,在出作用域时,将被自动释放;堆需要手动释放,如程序中不释放,程序结束时由操作系统回收。
    (2)空间大小不同:堆内存的大小受限于物理内存空间;栈一般只有8M。
  3.  动态分配内存new和delete
    使用堆区的内存由四个步骤:
    (1)声明一个指针;
    (2)用new运算符向系统申请一块内存,让指针指向这块内存;
    (3)通过对指针解引用的方法,像使用变量一样使用这块内存;
    (4)如果这块内存不用了,用delete运算符释放它; 
	int* p;
		p = new int(5);//申请一块内存,并对内存赋初始值5
		cout << "*p=" << *p << endl;

		*p = 8;//用解引用的方式把内存重新赋值
		cout << "*p=" << *p << endl;

		delete p;//释放内存

		system("pause");

注意:(1)动态分配出来的内存没有变量名,只能通过指向它的指针来操作内存中的数据。
           (2)如果动态分配的内存不用了,必须用delete释放它,否则有可能用尽系统内存

//	一直分配内存不释放内存的后果 案例
		for (int i = 1; i > 0; i++)
		{
			int* p1;
			p = new int[100000];//申请一块内存,一次申请100000个int
			cout << "p=" << p << endl;
		}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值