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

📅  最后修改于: 2021-06-29 22:56:54             🧑  作者: Mango

匹配以下列表I和列表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)的指针称为野生指针。可以将指针初始化为一个非NULL垃圾值,该值可能不是有效地址。

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

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