社区
C++ 语言
帖子详情
在什么情况下使用new来分配内存空间?
keeper123456
2007-01-31 04:42:42
RT
...全文
664
11
打赏
收藏
在什么情况下使用new来分配内存空间?
RT
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
猫腻儿姐姐
2007-02-01
打赏
举报
回复
1.什么是动态分配
举个例子,比如我要创建一个链表,但是目前并不知道该链表要有多少个节点的时候,我们就可以使用new,每增加一个节点就分配一个节点的大小。根据需要而定。
2.栈
我们使用的内存一般可以分为4个区:数据区,代码区,栈区,堆区。
其中栈用于存放数组等数据的大小。
堆用于存放我们动态分配的大小,比如:malloc,new
3.注意
C语言中只能使用malloc
C++中则均可以使用。但是当我们创建一个类的对象时只能用new,因为new时会去自动调用构造函数。
htqx
2007-02-01
打赏
举报
回复
堆和栈的关系:
1.程序运行开始,就申请了一个固定大小的内存区域,用来保存函数调用的参数和内部变量之类的.这个就是栈. 进入函数,首先从栈中分配函数里定义的变量.函数返回,自动从栈中释放这些变量的空间.一般栈的大小都是固定的,可能是2m. (可以在函数中定义 int arg[足够大]; 来测试栈溢出.
2.一般栈是为了实现程序功能本身一种自动化的内存申请行为,有很大的局限性:1.大小限制,2.释放规律限制,
程序员可以申请堆内存来突破这些限制,堆,就是系统内存的可用空间,她不是由程序所监管的,而是由操作系统负责管理. 程序需要新的堆空间,必须调用操作系统来申请.当然不需要调用winapi.c++语言本身使用new关键字来统一申请堆空间的操作.
但是申请了的内存,在不需要的时候,需要用delete来释放,否则就造成资源的浪费.
doubhor
2007-01-31
打赏
举报
回复
比如你要记录10个人的成绩,则可以使用数组,但是如果你要输入人数,然后记录这些人的成绩,那么你就不知道需要使用多大的数组,你总不能开辟一个很大的数组吧,所以就需要使用动态开辟空间的方法。
系统将内存空间分为两种,一种是堆,一种是栈。堆的特征是与进程相关,可以随机存取,或者说是一个块设备;栈的特征是后进先出,用来在函数间传递参数,或者给临时变量分配空间等等。
堆主要是由系统维护,栈在某些时候可以指定其大小(例如在生成线程时);堆比较大,栈相对比较小。
heliboy110
2007-01-31
打赏
举报
回复
处理的数据较多,而却大小不确定时~!!
lizhizhe2000
2007-01-31
打赏
举报
回复
"么判断什么动态产生,堆又如何理解呢?"
动态产生就是你在写代码的时候难以确定在分配多少内存,比如你要用一个数组存一个组的姓名,而这个组有多少个人你事先不知道,分配足够的内存比较浪费,所以"动态分配"
堆是计算机中没有被利用的内存区间,动态分配的内在单元出自于此!
keeper123456
2007-01-31
打赏
举报
回复
doubhor() ( ) 信誉:100 Blog 2007-01-31 17:09:38 得分: 0
使用C++,如果使用c的话使用malloc
要使用的空间长度不确定
要使用的空间长度不是定长
要在函数之间传递一些大的数据,使用new能够在堆上面保存数据
线程之间传递数据
。。。
总的原则是:动态产生,产生在堆上
/////////////////////////
问一下,我怎么判断什么动态产生,堆又如何理解呢?
doubhor
2007-01-31
打赏
举报
回复
使用C++,如果使用c的话使用malloc
要使用的空间长度不确定
要使用的空间长度不是定长
要在函数之间传递一些大的数据,使用new能够在堆上面保存数据
线程之间传递数据
。。。
总的原则是:动态产生,产生在堆上
heiyilvzhe
2007-01-31
打赏
举报
回复
在堆中分配内存
todototry
2007-01-31
打赏
举报
回复
比如一个班级的学生记录表,可以用数组存放,但开始的时候
这个数组尺寸呢过于多了浪费,过于少了,如果程序允许添加成员
所以这时new来执行时根据所需分配内存
ouyh12345
2007-01-31
打赏
举报
回复
1,所需大小不定,而且相差比较大
2,申请的内存比较大
todototry
2007-01-31
打赏
举报
回复
程序执行之前不知道用多少对象存放数据的时候
3-21
使用
new
关键字
分配
内存空间
C 语言中,我们常
使用
malloc函数来
分配
内存空间
C++中,我们尽量需要多
使用
new
关键字 typename *pointer =
new
typename; 举例:==== int *pointer =
new
int; 此时,我们
分配
了4个字节大小的
内存空间
将其...
C++学习10:
使用
new
分配
内存
今天就来学习
使用
new
分配
内存。
new
的作用和
使用
方法:
new
的作用在于可以在程序运行阶段动态
分配
内存,内存的大小在运行时根据需要确定,从而高效利用
内存空间
。
new
的
使用
方法如下: typeName* pointer_name =
new
...
【C++】动态内存
分配
详解(
new
/
new
[]和delete/delete[])
一、为什么需要动态内存
分配
?... 在这些
情况
下,程序需要动态
分配
内存,C ++语言将运算符
new
和delete合成在一起。 (1)特点 1.C++中通过
new
关键字进行动态内存申请 2.C++中的动态内存
分配
是基于类型进行的 ...
动态
分配
内存——
new
/delete
使用
new
分配
内存2.
使用
delete释放内存 1.
使用
new
分配
内存
使用
格式:
new
数据类型
new
经常和指针一起
使用
,指针真正的用武之地就是在运行阶段指向未命名的内存以存储值。 eg:在运行阶段为一个int值
分配
未命名的...
使用
new
分配
内存、创建动态数组、
1、
使用
new
来
分配
内存程序员需要告诉
new
,需要为哪种数据类型
分配
内存;
new
将找到一个长度正确的内存块,并返回该内存块的地址,程序员的责任是将改地址赋给一个指针。 int *pn =
new
int;
new
int告诉程序,需要存储...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章