malloc问题

_肆 2018-07-03 08:48:03
不是很懂malloc具体的机制,平时都是套格式用。

比如现在 float *a=(float*)malloc(sizeof(float)); 然后去给a[3]去赋值,一切都正常啊,不知道这个怎么解释
...全文
132 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-07-03
  • 打赏
  • 举报
回复
越界访问是未定义行为,即有出错的可能,程序不一定会出问题。但这终归是一个bug。

越界访问可能是越界的内存未被使用,越界的内存正好也是可读可写的。
还有可能,虽然申请sizeof(float)个字节,内存管理会申请比sizeof(float)更多的内存(这是必然,因为需要记录申请的信息)
赵4老师 2018-07-03
  • 打赏
  • 举报
回复
其实电脑开机后物理内存的每个字节中都有值且都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧