一个旅游网站建设需求分析,直播网站开发接入视频,广告公司介绍,平面ui设计网站在练习数据结构过程中#xff0c;定义指针p#xff0c;并且申请了10个char类型空间#xff0c;但在计算p所指空间大小时候#xff0c;发现了一些奇怪的现象。
#include stdio.h
#include stdlib.hint main(){char s[12];printf(the size of memory …在练习数据结构过程中定义指针p并且申请了10个char类型空间但在计算p所指空间大小时候发现了一些奇怪的现象。
#include stdio.h
#include stdlib.hint main(){char s[12];printf(the size of memory occupied %d\n,sizeof(s));//12char *s1 hello,world.;printf(the size of memory occupied %d\n,sizeof(s1));//8char *s2 (char *)malloc(sizeof(char) * 12);printf(the size of memory occupied %d\n,sizeof(s2));//8int a[3] {1,2,3};printf(the size of memory occupied %d\n,sizeof(a));//12int *a1 (int *)malloc(sizeof(int)*3);printf(the size of memory occupied %d\n,sizeof(a1));//8return 0;
} 可以发现sizeof()只有在计算定义为数组的大小是准确的在计算指针指向的数组或者申请空间的大小时候不准确。
通过查阅资料得知sizeof()不可以用来计算申请出来空间的大小。
那么为什么是8是因为8是指针所占空间的大小。
那我想要计算申请的空间的大小怎么办 _msize()
_msize()函数可以计算出申请空间的大小如下
#include stdio.h
#include stdlib.hint main(){char *s2 (char *)malloc(sizeof(char) * 12);printf(sizeof(s2) %d\n,sizeof(s2));//8printf(_msize(s2) %d\n,_msize(s2));//12int *a1 (int *)malloc(sizeof(int)*3);printf(sizeof(a1) %d\n,sizeof(a1));//8printf(_msize(a1) %d\n,_msize(a1));//12return 0;
}
!!!!!!!!!!!!如下两位博主讲的更为详细!!!!!!!!!!!!!!!!!!
参考资料
C语言——判断矩阵维数sizeof、_msize
C学习笔记之如何获取指针开辟空间或数组空间的大小以及_countof、sizeof、strlen、_Msize的区别