社区
C语言
帖子详情
new/delete 导致的内存碎片
albertjin123
2002-06-03 02:09:19
哪儿有相关的文档,FAQ呢?
...全文
119
2
打赏
收藏
new/delete 导致的内存碎片
哪儿有相关的文档,FAQ呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
school
2002-06-03
打赏
举报
回复
许多书中有。
楼上提到的两本书《windows核心编程》《thinking in C++ 》可到http://www.pcbookcn.com/
去下载。
dajian2000
2002-06-03
打赏
举报
回复
《windows核心编程〉有相关说明。
还有thinking in C++ 中介绍new /delete的相关部分。
C++
内存
泄漏检测原理+代码
C++
内存
泄漏检测原理的文档,包括代码,东东来自网络,我亲自整理,欢迎下载。
对象池模板
使用对象池,减少
new
和
delete
的次数,提供运行效率,减少
内存
碎片
,统一管理
内存
,防止
new
和
delete
用得不当
导致
内存
泄露,对应的博客链接:http://blog.csdn.net/d704791892/article/details/40486261
Linux: glibc: 频繁调用
new
/
delete
会不会
导致
内存
的
碎片
glibc的
内存
处理机制,是在释放的时候会自动将小块
内存
整合成大块
内存
,为接下来满足大块的需求的可能。而且程序也不是一直占着
内存
不释放(如果是一直不释放,要考虑是不是
内存
泄漏),这个和磁盘的
碎片
化还有些不一样,因为文件的存储时间长的多。而且每个程序对空间的申请量大多是有固定的模式,比如程序里的某个结构体的大小,固定就是10K,那就有了固定模式申请10K,释放10K,这个
内存
可以被重复利用。glibc 使用基于堆的
内存
分配方式,如果堆
内存
块被分割得过于零散,则可能
导致
某些
内存
不可用,即
内存
碎片
。
C++
内存
管理:
new
/
delete
vs malloc/free
C++中
new
/
delete
与malloc/free的主要区别在于:
new
/
delete
是C++关键字,具有类型安全性和自动的构造/析构调用,失败时抛出异常,且支持运算符重载;而malloc/free是C标准库函数,无类型检查,需手动计算
内存
大小,仅进行
内存
分配/释放。C++引入
new
/
delete
是为了更好地支持面向对象特性(构造/析构)、类型安全和异常处理。free释放的
内存
通常归还
内存
管理器而非直接返还操作系统,后续malloc可能复用。最佳实践推荐在C++中使用智能指针和RAII模式管理资源。
C/C++
内存
管理:
new
/
delete
,operator
new
/
delete
用法详解
答:(从左往右,从上往下顺序)前3个选C:因为全局变量,静态变量或静态全局变量生命周期都是全局,都属于静态区。静态的全局的在静态区;不可修改的常量,编译好的指令在常量区。const都可以修饰局部,全局,静态变量,不改变其空间位置,只是使其不可修改。常变量也是在栈上的4,5选A:局部变量和数组都是在栈上。6,7选A:6是数组存在栈上没问题,7是数组指向的内容,他是把常量字符串的内容拷贝到数组中,数组指向的内容是在栈上.................................
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章