指针pa
现在声明,在函数malloc()
中使用它,
为什么编译器可以知道它的大小?而编译器如何在代码下解析:
int *pa = malloc(10 * sizeof *pa); // allocate an array of 10 int
和
struct Node {
int value;
struct Node *prev;
struct Node *next;
}
prev
和next
为struct Node *
,但现在struct Node
未定义。
为什么编译器能够为*prev
,*next
分配足够的大小?
答案 0 :(得分:2)
因为它们是指针。编译器知道为指针分配多少内存。
答案 1 :(得分:1)
如果此处显示结构声明,您感兴趣的成员变量是指向某种类型的指针。
对于任何给定的环境,指针(类型)保持定义的大小。在为类型的变量分配内存时,编译器不需要知道该类型的实际大小,它只需要知道指向该类型的指针所需的大小,它就知道了。
答案 2 :(得分:0)
编译器没有为Node
结构内的select r from Region r where r.fatherId is NULL or r.fatherId=''
结构分配足够的空间。虽然它确实知道指针需要多少,并为两个指针和整数分配足够的空间。