C陷阱-不要返回静态局部变量
摘要:1、inet_ntoa 的实现返回了局部变量导致同一条命令不能两次调用! 让我们大家都扪心自问一下,我们在写程序的过程当中是否使用了这种方法?这是一个比较危险,容易出错的方法。这种陷阱让人防不胜防。想想,如果你有这样的程序: if ( strcmp( inet_ntoa(ip1), inet_nto
阅读全文
posted @
2025-06-27 20:08
redman274
阅读(4)
推荐(0)
多个动态库符号冲突解决方法
摘要:1. 符号隐藏与版本控制(Linux) 编译时隐藏非必要符号(使用GCC特性) gcc -fvisibility=hidden -shared -o libfoo.so foo. 结合__attribute__((visibility("default")))显式导出必要符 使用.map文件精细控制
阅读全文
posted @
2025-06-18 19:35
redman274
阅读(101)
推荐(0)
fputs,fwrite,fprintf的区别
摘要:1.都是库函数,都可以向文件写入数据,可能是二进制数据块,也可能是字符串 fputs,fwrite 前者向文件内写入字符串,一行结束,后者向文件内写入数据块(可能是字符串或者BYTE流) fwrite,fprintf 前者fwrite写入流stream中的数据是buffer指定的内容,内容的字节大小
阅读全文
posted @
2021-10-06 10:25
redman274
阅读(1522)
推荐(0)
1.realloc函数
摘要:void *ptr = realloc(ptr, new_size); if (!ptr) { // 错误处理 } 使用误区,返回指针可能是原来的,也可能不是原来的,如果上面这种,可能导致内存泄露。 另外使用时,需要判断new_size的值,如果new_size为0 ,那么相当于把ptr给free掉
阅读全文
posted @
2021-10-05 19:55
redman274
阅读(37)
推荐(0)
位段的使用
摘要:位域的存储C语言标准并没有规定位域的具体存储方式,不同的编译器有不同的实现,但它们都尽量压缩存储空间。位域的具体存储规则如下:1) 当相邻成员的类型相同时,如果它们的位宽之和小于类型的 sizeof 大小,那么后面的成员紧邻前一个成员存储,直到不能容纳为止;如果它们的位宽之和大于类型的 sizeof
阅读全文
posted @
2020-06-15 20:23
redman274
阅读(146)
推荐(0)