文章
161
粉丝
0
获赞
0
访问
32.5k

评分及理由
(1)得分及理由(满分2分)
学生答案:PCB处于内核区;scanf()等待键盘输入时,进程处于阻塞态。
标准答案:PCB位于内核区;执行scanf()时进程处于阻塞态。
学生回答与标准答案完全一致。得2分。
(2)得分及理由(满分3分)
学生答案:main()函数的代码位于只读代码区;malloc、scanf、printf需要通过执行驱动程序。
标准答案:main()函数的代码位于只读代码段;其直接调用的scanf()和printf()需要执行驱动程序。
分析:第一问正确。第二问中,学生列出了malloc、scanf、printf。malloc是库函数,用于动态内存分配,其功能主要在用户空间的内存管理器中实现,不直接涉及驱动程序。只有涉及I/O操作的scanf和printf才需要通过执行驱动程序实现。因此,学生多答了malloc,这是一个逻辑错误。考虑到题目问的是“直接调用的哪些函数”,且malloc确实被调用,但其功能不通过驱动程序实现,此处应扣分。扣1分。得2分。
(3)得分及理由(满分3分)
学生答案:ptr被分配在运行时堆;length会被分配在可读写数据区;ptr指向的字符串位于用户栈。
标准答案:ptr位于读/写数据段;length位于用户栈段;ptr指向的字符串位于堆区。
分析:
第一问:ptr是全局变量,应位于数据段(可读写数据区),而非运行时堆。学生回答错误,扣1分。
第二问:length是main函数内的局部变量,若不在寄存器中,应位于用户栈。学生回答为“可读写数据区”,错误,扣1分。
第三问:ptr指向的字符串是malloc动态分配的内存,应位于堆区。学生回答为“用户栈”,错误,扣1分。
本小题共扣3分。得0分。
题目总分:2+2+0=4分
登录后发布评论
暂无评论,来抢沙发