说在前面
本篇文章是腾讯技术面试题目汇总第三篇。
后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案和分析。
欢迎大家点赞关注转发。
最近有点忙,所以更新的比较忙一些
1.野指针是什么?如何检测内存泄漏?
- 野指针:指向内存被释放的内存或者没有访问权限的内存的指针。
- “野指针”的成因主要有3种:
- 指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如
char *p = NULL;
char *str = new char(100); - 指针p被free或者delete之后,没有置为NULL;
- 指针操作超越了变量的作用范围。
- 指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如
- 如何避免野指针:
- 对指针进行初始化
- 将指针初始化为NULL。
char * p = NULL;
- 用malloc分配内存
char * p = (char * )malloc(sizeof(char));
- 用已有合法的可访问的内存地址对指针初始化
char num[ 30] = {0};
char *p = num; - 指针用