添加调试日志,bug消失
2023-12-25 19:43:01
1、运行报错代码
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void func1()
{
int arr[10];
memset(arr, 1, sizeof(arr));
}
void func2()
{
int index;
int* arr = (int*) malloc(5);
arr[index] = 55;
}
int main()
{
func1();
func2();
return 0;
}
2、添加打印日志,段错误消失
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void func1()
{
int arr[10];
memset(arr, 1, sizeof(arr));
}
void func2()
{
int index;
int* arr = (int*) malloc(5);
arr[index] = 55;
}
void printLog()
{
printf("Hello world\n");
}
int main()
{
func1();
printLog();
func2();
return 0;
}
3、原因:
未添加打印日志时,index的值是func1中残留的值
4、扩展问题:
1)printf中没加'\n'时,必定崩溃,func2函数中index一定是0x01010101;
2)在func1函数中加printf("Hello world\n");必定崩溃,func2函数中index一定是0x01010101;
3)当func1函数中arr数组大小是10时,index才必定是0x01010101;当为其他值时,index也是随机值;
4)index是0x01010101必定崩溃,是其他随机值时,怎么不崩溃?
文章来源:https://blog.csdn.net/ylxwk/article/details/135200133
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!