在 C/C++ 中使用自引用结构指针的结构声明中内存如何工作?
How does memory work in declaration of structure which uses self-referential structure pointer in C/C++?
在C/C++的结构声明中,我们必须使用自引用结构指针而不是结构本身。
//编译错误
struct stack {
int overflow;
stack p;
}
struct stack {
int overflow;
stack* p;
}
一个报错另一个报错(声明)
我很好奇在声明时使用stack* p;
时内存区域的操作以及如何使它成为可能。
这个
struct stack {
int overflow;
stack p;
}
试图包含自己,那么它应该有多大?有了它自己的一个副本,它看起来像这样
int ov;
{
int ov;
stack p;
}
但是堆栈 p 需要扩展 - 所以我们得到
int ov;
{
int ov;
{
int ov;
stack p;
}
}
但是堆栈 p 需要扩展 - 所以我们得到
int ov;
{
int ov;
{
int ov;
{
int ov;
stack p;
}
}
}
但是堆栈 p 需要扩展 - 所以我们得到......永远。
换个角度看,struct应该包含多少个int溢出?
指针一是这样工作的
int overflow;
stack *p;
结束。该结构具有明确定义的大小,一个整数和一个指针
在C/C++的结构声明中,我们必须使用自引用结构指针而不是结构本身。
//编译错误
struct stack {
int overflow;
stack p;
}
struct stack {
int overflow;
stack* p;
}
一个报错另一个报错(声明)
我很好奇在声明时使用stack* p;
时内存区域的操作以及如何使它成为可能。
这个
struct stack {
int overflow;
stack p;
}
试图包含自己,那么它应该有多大?有了它自己的一个副本,它看起来像这样
int ov;
{
int ov;
stack p;
}
但是堆栈 p 需要扩展 - 所以我们得到
int ov;
{
int ov;
{
int ov;
stack p;
}
}
但是堆栈 p 需要扩展 - 所以我们得到
int ov;
{
int ov;
{
int ov;
{
int ov;
stack p;
}
}
}
但是堆栈 p 需要扩展 - 所以我们得到......永远。
换个角度看,struct应该包含多少个int溢出?
指针一是这样工作的
int overflow;
stack *p;
结束。该结构具有明确定义的大小,一个整数和一个指针