社区
C语言
帖子详情
用malloc()会破坏数据吗?
davidphoenix
2000-07-13 08:21:00
用malloc()开辟内存空间后,会破坏原来的用malloc()开辟的空间吗?如果是,如何避免?
...全文
242
10
打赏
收藏
用malloc()会破坏数据吗?
用malloc()开辟内存空间后,会破坏原来的用malloc()开辟的空间吗?如果是,如何避免?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
davidphoenix
2000-07-21
打赏
举报
回复
我已经用各位的方法试过了,但是还是不行啊,我的程序还是有问题,看来我最好把我的
程序贴出来了。
元明
2000-07-20
打赏
举报
回复
malloc()从堆中分配内存但它不会将所分配的内存中原来的数据清零的.
magicwizard
magicwizard@km169.net
U皮特U
2000-07-19
打赏
举报
回复
malloc是在堆中分配内存空间的,只要使用时不超出该空间范围即可,要用free释放已分配空间。两次malloc是不会重叠的。
SCUM
2000-07-17
打赏
举报
回复
也有可能是这样的:
第一次 malloc 后有一些写内存的赋值操作,但是写入的字节数超过了分到的内存字节
数,再一次 malloc 时,重叠了一部分溢出地址,所以保存在溢出部份的值就变了。
std::coding::peasant
2000-07-16
打赏
举报
回复
你好!
fuzzy
2000-07-15
打赏
举报
回复
又见ybcheng,你好,你说的真详细。
std::coding::peasant
2000-07-15
打赏
举报
回复
首先看看malloc究竟是干什么的?malloc 的作用是在内存的剩余空间,就是任何程序都没用的地方分配一块内存,把地址返回给程序。
所以 int *p; p = (int*)malloc(sizeof(int)); 的意思是说在内存的剩余空间分配一块大小为int的内存,把这块内存的地址赋值给 p,这样在给这块内存赋值:
*p = i; 实际上是把 i 保存到 malloc 分配的内存里了。
如果再次 p = (int*)malloc(sizeof(int)); 就是说在内存的剩余空间再分配一块大小为 int 的内存,把这个新分配的内存的地址赋值给 p,而先前用 malloc 分配的内存的地址等于多少就不知道了,先前的那块内存也就根本无法访问了,在内存里成为了“垃圾”。*p 的内容当然就是最后一次 malloc 的内存的内容了。
如果 malloc 的内存在不使用了的时候必须 free 掉,否则始终占用内存资源,而先前分配的内存没有被 free 掉就无法访问了,也就不能 free 了,成为一块内存漏洞。
davidphoenix
2000-07-14
打赏
举报
回复
我用malloc()开辟了内存空间后,输入了值,而后又用malloc()开辟空间后,原来的
值就变了,为什么?
Xiao
2000-07-14
打赏
举报
回复
如果你对一个指针进行两次malloc()操作而未将第一次的free()掉,则第一块内存成为orphan块并导致一个内存漏洞
std::coding::peasant
2000-07-13
打赏
举报
回复
不明白你问什么?谁破坏谁?什么叫原来的开辟的空间?
hardened_
malloc
:专为现代系统设计的强化分配器。 它已集成到Android的Bionic libc中,并且可以与musl和glibc一起在外部用作动态库,以在其他基于Linux的平台上使用。 随着时间的推移,它将获得更多的可移植性集成
硬化的
malloc
介绍 这是一个注重安全性的通用内存分配器,提供
malloc
API以及各种扩展。 它提供了针对堆
破坏
漏洞的实质性强化措施。 与传统的分配器设计相比,以安全为中心的设计还减少了因碎片导致的元
数据
开销和内存浪费。 它旨在提供良好的整体性能,重点放在长期性能和内存使用上,而不是分配器微基准测试。 它通过可配置数量的完全独立的竞技场提供可伸缩性,并且在竞技场内的内部锁定按大小级别进一步细分。 该项目目前支持Bionic(Android),musl和glibc。 将来可能
会
支持其他非Linux操作系统。 对于Android,有自定义集成和其他强化功能,将来也将针对musl进行计划。
linux 用户进程结束后
malloc
申请的内存
会
自动释放吗,进程退出后
malloc
的内存是否
会
被释放??...
linux下使用exit()函数退出进程,那么这个进程中使用
malloc
申请的内存
会
被系统回收吗?,如果使用kill函数呢?|当一个进程退出后,不管是正常退出或者是异常退出,操作系统都
会
释放这个进程的资源。包括这个进程分配的内存,打开的文件等等。用
malloc
分配的内存属于这个进程使用的内存,在进程退出后,当然
会
释放。操作系统如果连这个都做不到,那它还能做什么?4楼引用的那段英文:Memoryo...
Windows内核-内存管理
- 每个进程都有4GB的空间,但是这4GB空间并不是都在使用,有没有一个地方在记录着哪些地址空间已经使用了,哪些没有使用? - 肯定有一个地方在记录 - 怎么记录线性地址是否是可以用的?  ...
在什么情况下我应该使用
malloc
和/或new?
我看到在C ++中有多种分配和释放
数据
的方法,并且我了解,当您调用
malloc
您应该调用free而当您使用new运算符时,您应该与delete配对,并且将两者混用是错误的(例如,调用free()在
我要转换
malloc
的结果吗?
在 this question 中,有人在 comment 中建议我应该不转换
malloc
的结果。即,我应该这样做:而不是:为什么
会
这样?
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章