Pi() { Lock(m mutex); //含义为获取互斥信号量 a=new int[100]; //开辟一个大小为100的整型数组空间, //并用全局指针变量a保存空间地址 UnLock(m_mutex);

admin2018-09-11  30

问题 Pi() {
    Lock(m mutex);    //含义为获取互斥信号量
    a=new int[100];    //开辟一个大小为100的整型数组空间,
    //并用全局指针变量a保存空间地址
    UnLock(m_mutex);
    free(a);    //释放数组空间,且a的值不改变
    }
有多个优先级相同的进程Pi。试问下列同时运行多个进程Pi,可能会出现的错误是(    )。

选项 A、内存泄露
B、内存越界访问
C、内存泄露和内存越界访问
D、无

答案C

解析 由于a为全局指针变量,即属于临界资源,访问a的代码都属于临界区,临界区应该在Lock(m_mutex)和UnLock(m_mutex)之间,使各个进程互斥访问a。但由于本题free(a)在Lock(m_mutex)和UnLock(m_mutex)之外,所以是会出现错误的。
转载请注明原文地址:https://kaotiyun.com/show/ivRi777K
0

最新回复(0)