为什么用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
相关产品推荐
相关产品推荐

