cstdlib中的malloc(size_t_Size)函数可以给指针分配参数指定的空间,但最近遇到这么一个奇怪的问题:
#include<iostream>
#include<cstdlib>
int main(){
typedef struct{
short cnt;
char str[28];
}name;
name *arr=(name*)malloc(sizeof(name));
std::cout<<sizeof(name)<<'\n'<<sizeof(arr)<<'\n';//调试
system("pause");
return 0;
}
这是我写一个程序时发现问题后的调试,发现最后malloc并没有给arr分配sizeof(name)这么大的空间,这是Dev-C++编译器中的结果
右图可以看到,name的大小为30字节,但malloc只给arr分配了8字节大小的空间,这是什么原因?