最基础问答

本文详细介绍了堆和栈的区别,包括它们的申请方式、大小限制、执行效率及命名方式的不同。此外还对比了new与malloc的区别,并阐述了进程与线程的概念及其差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

堆和栈的区别:

1、栈区(stack 由编译器自动分配释放,存放函数的参数值局部变量的值等。

2、堆区(heap 一般由程序员分配释放,手动释放。

 

申请方式

系统自动分配

程序员自己申请

申请大小限制

向下生长,连续的内存空间

栈的大小是固定的,申请超过提示overflow

不连续的内存区域(链表)

大小受限于虚拟内存

执行效率

栈自动分配,效率快

手动分配效率慢,容易产生碎片

申请空间命名方式不同

有名分配,用其名字来访问

匿名分配,只能通过指针访问

 

newmalloc的区别

New/delete

Malloc/free

C++运算符

C/C++标准库函数

自动计算所需要分配的空间大小

手工计算

返回对象指针

返回void指针

能调用构造函数/析构函数

不能(不能申请自定义类对象)

 

 

 进程和线程

 

          进程

        线程

概念

资源分配的基本单位

调度运行的基本单位

程序执行的最小单位,执行处理机调度的基本单位

地址空间

独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种非常昂贵的多任务工作方式

共享进程中的数据,切换线程花费小,创建线程开销小

通信

进程间通信

共享数据,快捷方便,但要处理好同步互斥的关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值