发布时间:2014-07-23 10:56:10
一.总是检查这些输入/输出函数的状态并适当地处理错误。错误地检测和处理特定的输入/输出错误可能导致未定义的程序行为。错误代码:点击(此处)折叠或打开char buf[1024];fgets(buf, sizeof(buf), fp);buf[strlen(buf) - 1] = '\0'; /* Overwrite newline */ .........【阅读全文】
发布时间:2014-07-17 15:29:24
一.char *fgets(char *s, int n, FILE *stream);1.fgets函数返回并不一定是读到换行符,因为从stream读到的长度大于n时,数据会被截断只保留n-1个字符加一个'\0'终止符。错误代码:点击(此处)折叠或打开char buf[BUFSIZ + 1];if (fgets(buf, sizeof(buf), fp)) {.........【阅读全文】
发布时间:2014-07-15 10:44:46
一.内存资源被free后,不要对其进行读写操作。当内存被释放,其内容可能会保持不变和可访问。若访问其内容可能发生意想不到的变化,导致意想不到的程序行为。因此,有必要保证内存一旦释放,就不能写入或读取。错误代码:点击(此处)折叠或打开for(p = head; p != NULL; p = p-.........【阅读全文】
发布时间:2014-07-11 14:18:14
从写代码上看,内存管理包括内存分配、内存读写、内存释放。内存管理设计不当,会导致堆缓冲溢出、悬空指针(指向一块已经删除了的内存的指针)、double free等问题。1.MALLOC和RECALLOC内存分配不会初始化内存数据调用malloc函数成功后,其分配的内存的数据没有初始化,未知数据。calloc函数调用后,新分配的内存空间也.........【阅读全文】