近期项目中错误总结

  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);
	}
发布了27 篇原创文章 · 获赞 2 · 访问量 4612

猜你喜欢

转载自blog.csdn.net/xqjcool/article/details/103259030