c - C中具有数组的结构的内存分配

标签 c

我有一个包含数组的结构。如下所示:

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/

相关文章:

c - 读入短语并过滤掉字符以查找数字 C

无法在 macOS 上使用 GSL 库 - ld : symbol(s) not found for architecture x86_64

c - Floyd-Warshall 算法最短路径

c - 这两种内存分配有什么区别?

c - 我声明了一些其他结构变量,这些变量正在工作,但是这个语句显示

c - arduino 上的脉冲生成和读出

c++ - "Undefined Behavior"真的允许*任何*发生吗?

c - 为什么int转char没有溢出警告

c - 在 C 中返回反转字符串的函数 - 分配

c - 如何绘制一个 ds 的子显示器,就好像它是一个帧缓冲区一样?