C语言动态内存分配:查询p1、p2等变量的栈/堆存储位置
栈/堆内存分配解析:针对给定C代码
typedef struct { double x; double y; } point; point p1; point* p2 = malloc(sizeof(point));
以下是各变量的内存存储位置说明:
- p1:若为函数内的局部变量,存储在栈内存;若为全局/静态变量则位于静态存储区,通常这类直接声明的变量默认指局部栈变量。
- p2:指针变量本身存储在栈内存,它的值是
malloc分配的堆内存地址。 - p1.x:作为栈上结构体
p1的成员,随p1一同存在栈内存。 - p2->x:
p2指向的是malloc在堆上分配的结构体实例,因此该成员存储在堆内存。
内容的提问来源于stack exchange,提问作者Suthekshan
相关产品推荐
相关产品推荐

