为了更好地了解malloc指针如何在内部工作,我创建了一个short. 在我的系统上,int是 的大小的两倍,因此我创建了另一个类型的short指针并将其地址设置为 的转换值:qint*p
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main() {
short* p = (short*) malloc(2 * sizeof(short));
int* q = (int*) p;
assert(sizeof *q == 2 * sizeof *p);
p[0] = 0;
p[1] = 1;
printf("%u\n", *q);
}
Run Code Online (Sandbox Code Playgroud)
当我打印时,它显示的是*q数字,而不是我不明白为什么。如果我理解正确的话,应该表示如下(假设short是2个字节,int是4个字节):655361p
p[0] p[1]
0000 0000 0000 0000 | 0000 0000 0000 0001
Run Code Online (Sandbox Code Playgroud)
因此*q应该读取 4 个字节,从而读取值1。相反,它显示了65536表示为:
0000 0000 0000 0001 0000 0000 0000 0000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |