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

32位系统下该C代码中变量a的sizeof输出结果是什么?

C指针大小问题解答

代码示例

#include<stdio.h>
#include <stdlib.h>

int main() {
    char *a = malloc(sizeof(int) * 18);
    printf("%d",sizeof(a));
}

问题解答

  • 在32位系统中,变量a的大小是4字节,和你在64位系统中得到的8字节结果不同。
  • 本质原因:a是char*类型的指针变量,指针的大小由系统的地址空间宽度决定。32位系统的地址总线为32位,指针需要4字节来存储内存地址;64位系统的地址总线为64位,指针则需要8字节。
  • 额外说明:malloc(sizeof(int)*18)仅负责在堆区分配一块内存,a只是保存了这块内存的起始地址,sizeof(a)测量的是指针变量自身的大小,而非分配的内存块的大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:15:36