我有一个包含数组的结构。如下所示:
struct Node
{
int a;
char a1[25];
}obj;
main()
{
struct Node *p = malloc(sizeof(struct Node));
p->a=10;
}
我想知道是否为这段代码分配了两个不同的内存部分,一个来自堆栈,用于存储结构节点,另一个来自堆,用于存储指针 p
指向的节点?
最佳答案
这里没有为数组分配栈。 struct Node
内部的数组存储在堆上的连续 block 中。您可以通过打印 sizeof(struct Node)
看到这一点,它至少等于:
sizeof(int) + sizeof(char) * 25
关于c - C中具有数组的结构的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11648836/