社区
C++ 语言
帖子详情
动态申请内存和静态申请内存的根本区别在哪里了?
chenxidu
2008-11-06 04:06:30
在一个函数的内部:
char name[32] = "回帖也是善举" ; //--静态数组
char *name = new char[32] //--动态申请内存
memset(name ,0,sizeof(name));
strcpy(name ,"回帖也是善举");
想问一下,这两种申请内存的根本区别在哪里了?他们二者的利弊各是什么了?
...全文
1253
10
打赏
收藏
动态申请内存和静态申请内存的根本区别在哪里了?
在一个函数的内部: char name[32] = "回帖也是善举" ; //--静态数组 char *name = new char[32] //--动态申请内存 memset(name ,0,sizeof(name)); strcpy(name ,"回帖也是善举"); 想问一下,这两种申请内存的根本区别在哪里了?他们二者的利弊各是什么了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
帅得不敢出门
2008-11-06
打赏
举报
回复
1
前一个在栈区
后一个在堆区
栈与堆的区别搜一下就明白了.
栈系统负责清理
堆由程序员自己负责释放
jackzhhuang
2008-11-06
打赏
举报
回复
楼上有人说了,存储区域不一样,new出来的什么时候释放由你决定,栈里面分配的你管不着,函数结束出栈的时候由系统回收。
我看你有戏
2008-11-06
打赏
举报
回复
[Quote=引用楼主 chenxidu 的帖子:]
在一个函数的内部:
char name[32] = "回帖也是善举" ; //--静态数组
char *name = new char[32] //--动态申请内存
memset(name ,0,sizeof(name));
strcpy(name ,"回帖也是善举");
想问一下,这两种申请内存的根本区别在哪里了?他们二者的利弊各是什么了?
[/Quote]
new出来的东西一定需要delete,否则会发生内存泄露
理论上是静态数组处理的速度快点
在已知数组长度的情况下请使用静态数组
在数组长度需要变化的时候,请使用动态数组
zhuwanglove
2008-11-06
打赏
举报
回复
在内存中的位置不同.栈与堆的区别
beck_zhou
2008-11-06
打赏
举报
回复
[Quote=引用 3 楼 devil_zuiai 的回复:]
char name[32] = "回帖也是善举" ; //在栈取分配,程序自动释放。
char *name = new char[32] //在堆区释放,delelte释放。不释放可能造成内存泄露。
动态申请可以自己定大小。
静态只能编写时固定大小。
[/Quote]
wryse
2008-11-06
打赏
举报
回复
静态申请得到的对象过了当前作用域就被释放掉了,动态new出来的则不会,需要手动释放掉,可以用来向作用域外传递数据……
另外,记得两者申请出来的内存一个是在堆中一个是在栈中的……
呃,俺基础不牢,还需高手确认说法……
dream19861009
2008-11-06
打赏
举报
回复
区别:申请的内存在不同的位置,静态申请的数组内容 如上面的"回帖也是善举" 则将被放到静态存储区域中,但 new char[32] 申请的内存是在堆上的
利弊:静态是事先分配好的,变量无效时,对应内存会自动释放,动态是临时分配的,但不用时需要释放内存,否则会造成内存泄露
devil_zuiai
2008-11-06
打赏
举报
回复
char name[32] = "回帖也是善举" ; //在栈取分配,程序自动释放。
char *name = new char[32] //在堆区释放,delelte释放。不释放可能造成内存泄露。
动态申请可以自己定大小。
静态只能编写时固定大小。
hhyttppd
2008-11-06
打赏
举报
回复
区别在于堆栈和自由存储区。
cyj626
2008-11-06
打赏
举报
回复
自己做菜和吃别人做的菜
哪个好吃?
静态
内存
分配与
动态
内存
分配
静态
内存
分配与
动态
内存
分配 动机 平时看c/c++的书籍时,总会看到一种观点,说是C/C++语言使用的时候
动态
内存
分配是最重要的,使用malloc等函数分配的
内存
必须要释放,否则及其容易出现
内存
泄露。但是自己有时候挺奇怪的,啥时候的
内存
要自己释放,啥时候的
内存
是编译器释放呢?
内存
模型 这是csapp上面的linux进程
内存
分布图,从图中最下面往上看,只读段和读写段,在代码编译结束的时候就已经固...
静态
链表和
动态
链表的
区别
静态
链表和
动态
链表的
区别
:
静态
链表和
动态
链表是线性表链式存储结构的两种不同的表示方式。 1、
静态
链表是用类似于数组方法实现的,是顺序的存储结构,在物理地址上是连续的,而且需要预先分配地址空间大小。所以
静态
链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针。 2、
动态
链表是用
内存
申请
函数(malloc/new)
动态
申请
内存
的,所以在链表的长度上没有限制。
动态
链表
C++之
动态
空间
申请
在C++中,
动态
空间
申请
是一种在程序运行时根据需要
动态
地分配
内存
的方法。相比于
静态
空间
申请
,在编译时确定
内存
大小,
动态
空间
申请
能够更灵活地应对程序运行时的需求变化。通过使用new和delete运算符,我们可以在程序运行时
动态
地分配和释放
内存
。
动态
空间的
申请
可以用于创建数组、对象等需要不确定大小
内存
的数据结构,也可以用于避免
内存
浪费和提高程序的灵活性。在使用
动态
空间
申请
时,需要特别注意
内存
泄漏和指针悬空等问题,确保及时释放
动态
分配的
内存
,避免出现
内存
泄漏导致程序性
C语言中指针
动态
内存
的
申请
和释放
什么是
动态
内存
的
申请
和释放? 当程序运行到需要一个
动态
变量时,需要向系统的堆中
申请
一块
内存
,用来存储这块变量,这就是
内存
的
申请
。当程序不需要这个变量时,就需要把
申请
的这块
内存
释放掉,这就是
内存
的释放。往往
内存
的
申请
和释放是一起使用的,只要有
内存
的
申请
,就要有
内存
的释放,避免出现
内存
泄漏。 C语言指针的
申请
: (1).在C语言中使用malloc函数
申请
内存
,函数原形:void* malloc(size_t size); 参数size代表
申请
的
内存
的字节数,参数size_t代表指针的...
动态
内存
申请
你真的学会了吗?
个人主页:个人主页系列专栏:C语言 目录 1.
动态
分配
内存
的概述 2.
静态
分配、
动态
分配 1.
动态
分配函数 2、 free 函数(释放
内存
函数) 3、 calloc 函数 4、 realloc 函数(重新
申请
内存
) 3.
内存
泄露 1.
动态
分配
内存
的概述 在数组一章中,介绍过数组的长度是预先定义好的,在整个程序中固定不变,但是在实际的编程中, 往往会发生这种情况,即所需的
内存
空间取决于实际输入的数据,而无法预先确定 。为了解决上述问题, C语言提供...
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章