不使用sizeof 判断一个数据所占的内存大小


这个是我在笔试一家全英文笔试题的时候,绞尽脑汁才看懂的一个题目。

猛的一看这是一个比较DT的问题,一般我们看到关于测一个变量的内存大小就会想到sizeof,但是这次就是不让用sizeof了。就需要发掘新的想法。

当初在学习平台那一块知识的时候,讲到bootloader源码的时候似乎提到过一个想法,就是可以使用内存加1后的相减,得出该变量的实际内存大小。而后来我也在网上看到了一个类似的解答。

 这就要保证char型所占的内存为一个字节。

#include <stdio.h>

#define size(a) (char *)(&(a)+1)-(char *)&a

int main(){  int a=0;  printf("%d\n",size(a));  return 0 ; }

你可能感兴趣的:(不使用sizeof 判断一个数据所占的内存大小)