background image

2.段错误产生的原因
访问不存在的内存地址
#include<stdio.h> 
#include<stdlib.h> 
void main() 

int *ptr = NULL; 
*ptr = 0; 
}  
访问系统保护的内存地址 
#include<stdio.h> 
#include<stdlib.h> 
void main() 

int *ptr = (int *)0; 
*ptr = 100; 
}  
访问只读的内存地址 
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
void main() 

char *ptr = "test"; 
strcpy(ptr, "TEST"); 
}  
#include<stdio.h> 
栈溢出 
#include<stdlib.h> 
void main() 

main(); 
}  

3.使用 gcc 和 gdb 调试

     1  dummy_function (void)
     2  {
     3          unsigned char *ptr = 0x00;
     4          *ptr = 0x00;
     5  }
     6
     7  int main (void)