社区
C语言
帖子详情
静态&动态内存分配效率的问题
axs
2002-09-04 09:00:05
正在学习C++,老师说静态分配要比用new速度快一些
可是我不明白new函数到底做了些什么,反正我试着连续申请10000次,程序也没慢
哪位大侠可以讲解讲解?
...全文
403
9
打赏
收藏
静态&动态内存分配效率的问题
正在学习C++,老师说静态分配要比用new速度快一些 可是我不明白new函数到底做了些什么,反正我试着连续申请10000次,程序也没慢 哪位大侠可以讲解讲解?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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/C++指针经典资料大全
- 内存分配:
动态内存分配
(`malloc`,`calloc`,`realloc`)和
静态
内存分配(栈上的内存)。 - 内存释放:`free`函数用于释放动态分配的内存,防止内存泄漏。 - 指针和数组的关系:数组名实质上是首元素的地址,...
java六大必须理解的
问题
文档
- **内存分配**:
静态
变量只有一份拷贝,而实例变量对于每个对象都有一份拷贝。 通过以上六个方面的详细解释,我们不仅深入了解了Java中一些核心概念的基本原理,还掌握了如何正确使用这些特性来编写更高效、更安全...
【C/C++】
静态
内存分配与
动态内存分配
编译时内存分配或
静态
内存分配 (Compile-time or Static Memory Allocation)运行时内存分配或
动态内存分配
(Run-time or Dynamic Memory Allocation)
静态
内存分配
静态
内存分配是由编译器为声明的变量分配内存。...
静态
、
动态内存分配
比较
首先,在使用动态分配内存技术前,必须明白自己在做什么,这样做与其它的方法有什么不同,特别是会产生哪些负面影响...2)
静态
内存分配是在栈上分配的,动态内存是堆上分配的; 3)
动态内存分配
需要指针或引用数据类型
动态分配内存与
静态
内存
2)
静态
内存分配是在栈上分配的,动态内存是堆上分配的; 3)
动态内存分配
需要指针或引用数据类型的支持,而
静态
内存分配不需要; 4)
静态
分配内存需要在编译前确定内存块的大小,而动态分配内存不需要编译前确定...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章