S.base=(SElemType *)malloc (STACK_INIT_SIZE*sizeof(SElemType)); S.base 得到的是什么呀

如题所述

你好s.base得到的是新分配内存的首地址。
malloc (STACK_INIT_SIZE*sizeof(SElemType))手动分配STACK_INIT_SIZE*sizeof(SElemType))大小字节数的内存,并返回一个void*类型指针。
(SElemType *)把void*类型指针转换为(SElemType *)类型。
你的s.base也是(SElemType *)类型的指针吧。追问

STACK_INIT_SIZE*sizeof(SElemType)) 是指分配STACK_INIT_SIZE这么大的内存,还是指分配STACK_INIT_SIZE个像SElemType这么大的内存

追答

是指分配STACK_INIT_SIZE个像SElemType这么大的内存
比如分配100个int变量的内存:
相当于STACK_INIT_SIZE = 100;
sizeof(int) = 4;
所以实际要分配4 * 100也就是400个字节的内存。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-12
获得的是一块连续的内存空间,大小为 STACK_INIT_SIZE * sizeof(SElemType)

你把你的栈结构体发上来,给你写个完整例子.
相似回答