首先声明,我采用的是Mac的Xcode软件编写的测试例代码,使用的是LLVM编译器,C99标准。
问题描述:malloc( sizeof( 结构体 ) ) 与 malloc( sizeof( 结构体指针 ) ) 有什么区别 ?
具体说明:
假定一个结构体
struct Stu{
int i ;
float f ;
double d ;
int * ip ;
float * fp ;
double *dp
}
定义2个变量 :
struct Stu *strup_1 = malloc(sizeof(struct Stu)) ;
struct Stu *strup_2 = malloc(sizeof(struct Stu*)) ;
打印1:sizeof(struct Stu) ; sizeof(struct Stu*) ;
打印2:sizeof(strup_1) ; sizeof(strup_2) ;
结果:
打印1的结果:40、8
打印2的结果:8 、8
问题具体:
问题1:请问,为什么struct Stu结构体的大小最大,有40,但是结构体指针的只有8 ? 只是因为 结构体指针是指针,指针大小都一样 ?
问题2:定义了2个变量,这两个变量已经malloc了,也就是说,已经开辟了内存大小,为什么还是指针的大小8 ,而不是实际开辟的大小?
问题3:定义的2个变量,一个是 malloc 结构体,一个是malloc 结构体指针,为什么打印出来的大小都一样,而且都是8,这是指针大小啊,不是实际开辟大小啊,怎么回事 ???
问题4:结构体指针分配内存,到底应该 malloc ( sizeof ( 结构体 ) ) , 还是 malloc ( sizeof ( 结构体指针 ) ) ???
在这请教了,各位 。