You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自制OS中简易malloce存疑:传入size=0仍正常工作求解答

关于自制OS中简易malloce实现调用size=0仍能读写的问题分析

先看你贴的这段malloce代码,它完全不是一个符合规范的内存分配实现,核心问题如下:

  • 这个函数不管传入的size参数是多少,都会固定返回地址0x100000,没有任何动态分配内存的逻辑,也没有内存块管理的机制——本质上只是返回了一个固定的内存地址,和“分配”毫无关系。
  • 当调用malloce(0)时,for循环的条件i < 0不成立,循环体完全不会执行,函数直接返回0x100000。
  • 你后续能正常读写0-9的数组内容,只是因为0x100000开始的内存区域在你的自制OS环境中是可读写的。你相当于直接在这块固定内存上做了越界操作(因为你传入的size是0,但实际使用了更多内存),这和函数的“分配”行为无关——哪怕传0,函数还是给了你这个固定地址,而你的OS恰好允许访问这块内存。

补充说明:标准C中malloc(0)的返回值是实现定义的,可能返回NULL,也可能返回一个不可解引用的非NULL指针,但绝对不会允许直接在返回的地址上读写数组。你现在用的这个实现完全不符合规范,只是一个模拟了返回地址的空架子。

内容的提问来源于stack exchange,提问作者Enes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:45:48