【发布时间】:2019-08-23 21:24:14
【问题描述】:
我想看看实际的指针变量在内存中包含什么。我知道它包含一个地址。但它还包含什么?
在C 编程语言中,Brian W. Kernighan 和 Dennis M. Ritchie 在第 93 页上说指针是 2 或 4 个字节。此页面上有一个有用的图形。
图形和数据定义会有所帮助。
【问题讨论】:
-
它依赖于实现,但在大多数传统计算机上它只是一个地址。
-
在大多数系统上它只是一个(无符号)整数
-
那本书有些过时了。在现代系统上,它是 4 或 8 个字节。
-
@JoshGinn,该整数为 4 或 8 个字节宽。换句话说,需要 4 或 8 个字节来保存计算机可以使用的任何可能的地址
-
有谁知道这对于指向堆内存的指针是否相同?我认为
malloc()或calloc()操作的大小存储在某处,因此free()知道要回收多少内存。
标签: c pointers memory-management