📌  相关文章
📜  门| Sudo GATE 2020 Mock I(2019 年 12 月 27 日)|第 46 题

📅  最后修改于: 2021-09-25 07:29:58             🧑  作者: Mango

匹配以下 List-I 和 List-II:

List-I List-II
P. Memory Leak 1.
#include 
  
void fun(int x) 
{ 
    if (x == 1) 
       return; 
    x = 6; 
    fun(x); 
} 
  
int main() 
{ 
   int x = 5; 
   fun(x); 
} 
Q. Dangling Pointer 2.
char* func()
{
   char str[10];
   strcpy(str,"Hello!");
   return(str); 
}
R. Stack Overflow 3.
#include < stdlib.h >

  void f() {
    int * ptr = (int * ) malloc(sizeof(int));
    /* Do some work */
    return;
  }
S. Wild Pointer 4.

int main() 
{ 
  int  *p; 
  int a = 10; 
  p = &a;  
  *p = 12; 
} 


(A) P – 1, Q – 4, R – 3, S – 2
(B) P – 1, Q – 2, R – 3, S – 4
(C) P – 3, Q – 4, R – 1, S – 2
(D) P – 3, Q – 2, R – 1, S – 4答案: (D)
解释:当程序员在堆中创建内存并忘记删除它时,就会发生内存泄漏。

指向已被删除(或释放)的内存位置的指针称为悬空指针。

如果函数无限次递归调用自身,那么堆栈将无法存储每次函数调用使用的大量局部变量,从而导致堆栈溢出。

尚未初始化为任何内容(甚至不是 NULL)的指针称为野指针。指针可能被初始化为可能不是有效地址的非空垃圾值。

因此,P – 3,Q – 2,R – 1,S – 4。

选项(D)是正确的。
这个问题的测验