我在一个介绍性的嵌入式系统课程测验中有这个 c 代码示例:
#include <stdlib.h>
#include <stdint.h>
//cross-compiled for MSP432 with cortex-m0plus
int main() {
int * l2;
return 0;
}
我想知道 * l2 在内存中的内存段、子段、权限和生命周期。
我的理解是指针 l2 将首先在堆栈子段中分配,然后因为它未初始化,它将获得一个垃圾值,在这种情况下,它是它在堆栈中找到的任何值;我认为它在具有静态生命周期的 .text 或 .const 中,并且这些答案都不正确,所以我在这里遗漏了什么吗?
编辑:
在我没有正确解决这一点的情况下通过了测验后,解决方案表显示它在 heap with indefinite life 中。我从这个答案中得到的是:因为指针本身存储在堆栈中并且它指向的对象未初始化(它不是自动或静态的),所以它存储在堆中..我猜?