【发布时间】:2014-04-01 09:51:35
【问题描述】:
我正在学习学习c the hard way这本书,并且在练习19中遇到了一些问题。作者说ex19是为了让学习者了解c中的宏。我理解这个概念没有问题,但我就是不理解其他所有内容。我无法理解对象原型是如何创建的。
特别是,下面的句子是什么意思?
由于 C 将 Room.proto 字段放在首位,这意味着 el 指针是 真的只指向足够的内存块才能看到完整的 对象结构。它不知道它甚至被称为原型。
相关代码是这样的:
// this seems weird, but we can make a struct of one size,
// then point a different pointer at it to "cast" it
Object *el = calloc(1, size);
*el = proto;
- 谁能告诉我malloc/calloc到底是如何工作的?据我所知,它只是分配所需数量的内存并返回第一个地址。如果是这样,计算机如何知道分配的内存的数据结构?就像代码中的
Room *arena = NEW(Room, "The arena, with the minotaur");之后,你可以直接这样做arena->bad_guy = NEW(Monster, "The evil minotaur");电脑怎么知道有bad_guy?? - 在上面两个语句(
Object *el = calloc(1, size);和*el = proto;)之后*el的内容到底是什么?
任何帮助将不胜感激!
【问题讨论】: