←上一题某进程的虚拟地址空间如图,阴影部分为未占用区域,有 C 程序: char * ptr; void main() { int length; ptr=(char*) malloc(100); scanf("%s", ptr); length = strlen(ptr); printf("length=%d\n", length); free(ptr) ; } (1) 上述程序执行时,PCB 位于哪个区域,执行 scanf () 等待键盘输入时,该进程处于什么状态? (2) main() 函数的代码位于哪个区域?其直接调用的哪些函数的功能需要通过执行驱动程序实现? (3) 变量 ptr 被分配在哪个区域?若变量 length 没有被分配在寄存器中,则会被分配在哪个区域?ptr 指向的字符串位于哪个区域?