本文主要是介绍不使用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 判断一个数据所占的内存大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!