C-动态内存分配

问题描述 投票:0回答:1
typedef struct {
    double x;
    double y;
} point;

point p1;
point* p2 = malloc(sizeof(point));

在此代码中,变量 p1、p2、p1.x 和 p2->x 存储在堆栈或堆内存中?

上述变量存储在栈内存还是堆内存中?

c heap-memory dynamic-memory-allocation stack-memory
1个回答
0
投票
typedef struct {
    double x;
    double y;
} point;

point p1;

void foo(void)
{
    point* p2 = malloc(sizeof(point));
    /* ... */
}
  • p
    具有静态存储期限(与整个程序的生命周期相同)
  • p2
    具有自动存储期限(寿命与功能
    foo
    相同)
  • *p2
    (指针
    p2
    引用的对象具有已分配存储持续时间(与整个程序的生命周期相同)

在此代码中,变量 p1、p2、p1.x 和 p2->x 存储在 堆栈内存还是堆内存?

上述变量存储在栈内存还是堆内存中?

C 标准没有说明这些对象存储在哪里,从程序员的角度来看这并不重要。只有存储时间对您来说很重要

© www.soinside.com 2019 - 2024. All rights reserved.