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++编译器中的结果
arr是指针,指针是固定分配8字节大小的空间,存储指向的地址
sizeof(arr)获取的是存储指向的地址的空间大小
要获取数据的空间大小应该是sizeof(*arr)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
arr是指针,在你的系统占了8个字节,用*arr才可以返回正确结果,没有出错
arr是指针啊,指针长度都一样,一般八个字节
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!