社区
C语言
帖子详情
静态&动态内存分配效率的问题
axs
2002-09-04 09:00:05
正在学习C++,老师说静态分配要比用new速度快一些
可是我不明白new函数到底做了些什么,反正我试着连续申请10000次,程序也没慢
哪位大侠可以讲解讲解?
...全文
433
9
打赏
收藏
静态&动态内存分配效率的问题
正在学习C++,老师说静态分配要比用new速度快一些 可是我不明白new函数到底做了些什么,反正我试着连续申请10000次,程序也没慢 哪位大侠可以讲解讲解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
用户 昵称
2002-09-07
打赏
举报
回复
以前的如楼上兄弟说的,现在功能加强了
1)静态分配原指在硬盘数据中具有空间
例如我们声明
int c[50000] = { 0 };//程序进入内存时已经建立
和
int c[50000];//程序引导代码执行时建立
原先的编译程序就不同了
如果选中某些优化条件,现在的编译程序太复杂,不懂了。
2)即便是在程序引导代码执行时建立的空间效率也比new的要搞些,这包括
地址重定向等。
axs
2002-09-07
打赏
举报
回复
关于32位的虚存问题,我在林锐博士的 高质量c++编程 中看到过类似的说明
静态内存申请在编译时就已经分配好
而动态申请则在需要时通过new来申请
现在的困惑是 new 和 静态分配(比如使用数组)之间的效率是否相差大到一个不得不考虑的程度。例如TCP/IP协议每次为数据包申请内存和预留一块大内存来保存所有的数据包,这两种方式之间的性能差别是否较大?
zheng_can
2002-09-04
打赏
举报
回复
静态分配的话,是在程序读入内存后就分配空间,在运行的时候,自然就不会花时间在这个上面
用 new 进行动态分配,是在运行的时候分配内存,那自然会导致运行过程慢一点点
耙子
2002-09-04
打赏
举报
回复
to :arcsiny(诺亚方舟)
……对于32位程序而言,new 和 malloc几乎不可能
导致“内存耗尽”。。因为32 位操作系统支持“虚存”,内存用完了,
自动用硬盘空间顶替。
……
这个观点是不对的,32bit的操作系统的寻址空间4G,win32里面实际每个进程的空间是2G,如果你的内存和硬盘足够大,申请到2G程序也不行了。
wqh136
2002-09-04
打赏
举报
回复
如果不是指针 , 则在编译时分配 ;而指针NEW是在运行时分配,故慢,效率底于静态分配的数据对向;
cxjddd
2002-09-04
打赏
举报
回复
new要向系统请求吧。
geeksky
2002-09-04
打赏
举报
回复
楼主请记清,new是操作符,不是函数
mechgoukiteng
2002-09-04
打赏
举报
回复
因为new会通过os申请内存,那么会导致寻找可用内存的过程
arcsiny
2002-09-04
打赏
举报
回复
下面的代码,就是一个试图耗尽内存的程序
void main(void)
{
float *p = NULL;
while(TRUE)
{
p = new float[1000000];
cout << “eat memory” << endl;
if(p==NULL)
exit(1);
}
}
对于new来说是C++的运算符。可用于申请动态内存。
不过,对于32位程序而言,new 和 malloc几乎不可能
导致“内存耗尽”。。因为32 位操作系统支持“虚存”,内存用完了,
自动用硬盘空间顶替。
【C补充】关于内存的分配
问题
/* 1.C中的内存分配 栈:用来存放函数的形参和函数内的局部变量。 结合汇编,我的理解就是函数的话,都是通过压栈,出栈来处理的。 堆:用来存放由动态分配函数(如malloc)分配的空间。 是由程序员手动分配的,并且必须由程序员用free手动释放。 ...
1.内存分配方式
1.内存分配方式 内存分配方式有三种: [1]从
静态
存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 [2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存...
【C语言】动态内存管理
【C语言】动态内存管理 C语言 提供了一些用途较为特殊的函数,不像变量命名那样在定义之初将变量的空间固定,可以依照自己的需求,比较灵活的开辟空间,保证空间的利用
效率
; 首先介绍内存的简单概念: \\内存主要分为三大区域,用于存放不同类型的变量: 栈区:存放临时的变量,例如局部变量,形参,也就是我们常用的开辟空间方法;
静态
区:存放
静态
变量 (static 定义),全局变量; 堆区:使用动态内存开辟的主要区域; C语言中参与
动态内存分配
的函数主要有: malloc cal
程序内存分配方式
1.内存分配方式 内存分配方式有三种: [1]从
静态
存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 [2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,
效率
很高,但是分配的内存容量有限。 [3
C/C++内存分配方式
内存分配方式 内存分配方式有三种: [1] 从
静态
存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量, static 变量。 [2] 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,
效率
很高,但是分配的内存容量有限。 [3]
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章