不使用sizeof 判断一个数据所占的内存大小
时间:01-30 09:58 阅读:1065次
*温馨提示:点击图片可以放大观看高清大图
简介:这个是我在笔试一家全英文笔试题的时候,绞尽脑汁才看懂的一个题目。
猛的一看这是一个比较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 ;
}