3 回答

TA贡献1848条经验 获得超2个赞
这个是从堆里面申请了一块内存,内存大小是Student的大小加1K
如果你的 char *str是Student的成员
那么str本身所占用的内存是属于Student的对象的内存
但是str所指向的内存在那里,是要看你如何给 str赋值的,你找找如下的语句:
stu->str=
但是我看你的程序多申请了1K内存,感觉就是准备让str指向这里的。

TA贡献1906条经验 获得超10个赞
HeapAlloc是内存分配函数,详细权威的文档参考MSDN。
//分配了一块内存,大小是sizeof(Student) + 1024,并且内存的地址保存在变量stu里
HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,sizeof(Student) + 1024);
这块内存地址被强制转化为类型(Student*),编译器在得到这个信息之后,会使用(Student)类型来解析你的代码对这块内存的访问。目前来看,这是一块放满了0的内存,里面没有任何对象和数据,就是一堆0。为什么,因为你使用了HEAP_ZERO_MEMORY标志。

TA贡献1801条经验 获得超16个赞
HeapAlloc()就是在堆上分配内存,简单点就是个分配内存的函数,想深入了解可以去查查分配内存的方式。stu是个指向Student的指针,HeapAlloc()执行后stu就指向已分配好的这段内存空间,可以在这个空间里存储Student结构对象。
添加回答
举报