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

为什么用malloc分配更多内存后,打印指针的sizeof结果仍小于分配字节数?

C语言sizeof(p)返回4的原因

sizeof 是编译期运算符,返回的是变量本身占用的内存字节数,和变量指向的内存空间大小没有任何关联。

你代码里的p是int*类型的指针变量,所有指针变量的大小仅由当前编译环境的地址位宽决定:

  • 32位编译环境下,内存地址用32位二进制存储,任意类型的指针大小固定为4字节
  • 64位编译环境下,内存地址用64位二进制存储,任意类型的指针大小固定为8字节

你得到4的结果,说明代码运行在32位编译模式下,和你通过malloc申请了8字节堆内存的操作完全无关。malloc分配的内存块大小信息存储在底层内存管理逻辑中,不会写入指针变量本身,C语言原生没有提供直接从指针获取指向内存总大小的能力,如果业务中需要用到分配的内存大小,需要额外定义变量单独存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:04