内存区域

xiaoxiao2021-02-28  28

int Max(int a,int b) { return a>b ? a : b

} int g_a = 10; static int b = 20; int *p1 = &a; int *p2 = &b; int *p3 = (int *)malloc(20);  // 存在于main函数中 int *p4 = &g_a; int (*p5)(int,int) = Max; p1,&p1,p2,&p2,p3,&p3,p4,&p4,p5,&p5 所在的内存区域? 解析: 首先了解内存区域分为:代码段,全局(静态)变量区,栈,堆。 分析题目,对&p1则是求p1本身所在的内存区域。

又p1为局部变量,则p1在栈里面。 同理:&p2,&p3,&p4,&p5 在栈里面。 p1保存a的地址,则p1所在的内存区域也就是a所在的内存区域,所以p1在栈中。

p2保存b的地址,b又为静态局部变量,则p2在静态变量区。 p3为动态内存,故p3在堆。

p4保存g_a的地址,而g_a为全局变量,则p4在全局变量区。 p5为Max函数,则P5在代码段。

转载请注明原文地址: https://www.6miu.com/read-2626055.html

最新回复(0)