社区
C++ 语言
帖子详情
动态申请内存和静态申请内存的根本区别在哪里了?
chenxidu
2008-11-06 04:06:30
在一个函数的内部:
char name[32] = "回帖也是善举" ; //--静态数组
char *name = new char[32] //--动态申请内存
memset(name ,0,sizeof(name));
strcpy(name ,"回帖也是善举");
想问一下,这两种申请内存的根本区别在哪里了?他们二者的利弊各是什么了?
...全文
1264
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.
静态
数组在
内存
中位于栈区,是在定义时就已经在栈上分配了固定大小,在运行时这个大小不能改变,如:int a[10];
动态
数组是malloc或者new出来的,位于
内存
的堆区,它的大小是在运行时给定,并且可以改变其,如: int *a; a = new int[10]; 2.
静态
数组的大小是在编译期间就确定,并且分配的,其
内存
在使用结束后由计算机自动释放,效率高;
动态
数组是在程序运行时,由程序员根据实际需要从堆
内存
中
动态
申请
的,使用结束后由程序员进行释放,效率低。 3. ...
内存
的
静态
分配和
动态
分配的
区别
【转】
来源: http://blog.csdn.net/liuchao1986105/article/details/6724392
内存
的
静态
分配和
动态
分配的
区别
主要是两个: **一是时间不同。**
静态
分配发生在程序编译和连接的时候。
动态
分配则发生在程序调入和执行的时候。 **二是空间不同。**堆都是
动态
分配的,没有
静态
分配的堆。栈有2种分配方式:
静态
分配和
动态
分配。
静态
分配是编译器完成的,比如局部变...
手把手入门C语言—
动态
内存
和
静态
内存
总结
手把手入门C语言—
动态
内存
和
静态
内存
总结特点知识拓展
动态
内存
和
静态
内存
堆和栈的
区别
:1.
申请
方式2.
申请
后系统的响应3.
申请
大小的限制4.
申请
效率的比较:5.堆和栈中的存储内容6.
内存
的回收代码回顾之前的文章
静态
内存
分配链接
动态
内存
分配链接 特点 特点:
申请
完之后,只要不回收就会一直在
内存
中存在子函数的值,可以被主函数长时间的保留。 知识拓展
动态
内存
和
静态
内存
静态
内存
是程序编译执行后系统自...
C语言之
动态
内存
申请
、
内存
泄漏
数组的
内存
空间一般是定义好的,在程序的运行中固定不变。在实际的编译中,所需的
内存
空间取决于实际输入的
内存
长度。为了解决这个问题C语言提供了一些
内存
管理的函数,需要
动态
的去分配
内存
,也可以将不使用的
内存
空间回收再利用。
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章