欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

近期项目中错误总结

程序员文章站 2022-05-30 15:12:14
...
  1. strcmp/strncmp函数使用错误。期望相等则执行block,结果却用了
	if (strcmp(string1, string2))
	{
		do something;
	}
避免方法:
尽量使用 if (strcmp(string1, string2) == 0) 这样显式使用比较等式。容易理解编码期望,也容易发现编码错误。
  1. 结构指针使用前没有判断是否为NULL,这估计是C开发中造成异常最多的问题。
	if (structPtr->member)
	{
		do something;
	}
避免方法:
每次使用 -> 符号,都要确保左边指针是存在的。养成看到 -> 符号立马就check 指针是否OK的好习惯。
  1. 使用已释放的内存中list指针去获取next,尤其是在for循环中,很具迷惑性
	for (structPtr = headPtr->next; structPtr != headPtr; structPtr = structPtr->next)
	{
		do something;
		free(structPtr);
	}

如代码所示,如果代码体太大,还挺难看出这个问题。
避免方法:
如果代码体中会释放结构,那么在释放之前先获取到相应指针。示例如下:

	next = headPtr->next;
	while (next != headPtr)
	{
		structPtr = next;
		nextPtr = next->next;
		do something;
		free(structPtr);
	}
相关标签: 错误总结