
C
文章平均质量分 78
slvher
这个作者很懒,什么都没留下…
展开
-
fscanf()函数的高级用法
最近遇到了一段读文件的代码,用fscanf()进行文件读取,其中用到了比较复杂的格式控制字符串,google之后才了解到fscanf( )还可以这样用,故记录于此。 标准C程序库中,fscanf( )原型入下:Syntax: #include int fscanf( FILE *stream, const char *format, ... );The func转载 2012-02-28 18:11:01 · 5139 阅读 · 1 评论 -
内存写越界导致破环堆结构引起的崩溃问题定位经验[如报错malloc(): memory corruption或free(): invalid next size]
前段时间开发的一个后端C模块上线后,线上出core,初始时,由于访问压力不大,所以崩溃是上线3天左右出现的。当时用gdb跟进调用堆栈并检查源码,发现出core位置的代码没有啥问题。由于当时开发任务较重,且该模块不保存状态(崩溃重启不影响对外服务),所以没有深入跟进。后来随着客户端版本逐渐放量导致访问压力上升,噩梦开始了。。。 该模块会不定时core掉,而且几乎每次崩溃时的调用堆栈原创 2013-06-21 12:03:57 · 10186 阅读 · 2 评论 -
【读书笔记】C程序中常见的内存操作有关的典型编程错误
对C/C++程序员来说,内存管理是个不小的挑战,绝对值得慎之又慎,否则让由上万行代码构成的模块跑起来后才出现内存崩溃,是很让人痛苦的。因为崩溃的位置在时间和空间上,通常是在距真正的错误源一段距离之后才表现出来。前几天线上模块因堆内存写越界1个字节引起各种诡异崩溃,定位问题过程中的折腾仍历历在目,今天读到《深入理解计算机系统》第9章-虚拟存储器,发现书中总结了C程序中常见的内存操作有关的10种典型编原创 2013-06-22 14:28:55 · 1525 阅读 · 0 评论 -
【读书笔记】linux系统用semaphore来解决经典的生产者-消费者问题
在Linux系统下处理多进程或多线程的并发编程时,进程/线程同步是经常要遇到的问题。而在众多同步问题的场景中,生产者-消费者问题(Producer-Consumer Problem)是一个几乎每部涉及到同步问题的经典教材都会提到的经典模型。在linux系统中,实现同步的典型思路是借助内核提供的3种变量,分别是:1) 互斥量(mutex); 2) 信号量(semaphore); 3) 条件变量(原创 2013-07-14 17:28:06 · 2565 阅读 · 0 评论 -
【读书笔记】并发编程需要注意的几个典型问题
本文为《Computer Systems: A Programmer's Perspective》第12.7节—并发编程问题的读书笔记。下面开始正文。1. 线程安全 若一个线程安全(thread-safety)的函数应满足条件:当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。相对地,若一个不是线程安全的函数被称为线程不安全(thread-unsafety)函数。原创 2013-07-21 17:05:30 · 1529 阅读 · 0 评论 -
【Linux C调试笔记】Linux系统下借助mcheck实现c/c++程序的堆内存异常检查
C/C++编程中,内存管理(这里特指堆内存管理)一直是个让大家如履薄冰的topic,尤其是由成千上万行代码构成的模块中,由于堆内存被越界改写而导致程序崩溃的情况非常普遍。最让人头大的是,程序崩溃的地方往往不是"案发地"(一般情况是,堆内存越界很长时间后,程序才会表现出异常行为),因此,此类问题通常很难定位,在多线程程序中,情况会更糟。 那么,有什么方法可以让程序在堆内存越界时就立原创 2013-08-28 16:17:55 · 5369 阅读 · 0 评论 -
C/C++中用va_start/va_arg/va_end实现可变参数函数的原理与实例详解
在C/C++中,我们经常会用到可变参数的函数(比如printf/snprintf等),本篇笔记旨讲解通过va_start/va_arg/va_end这簇宏来实现可变参数函数的原理,并在文末给出简单的实例。 备注:本文的分析适用于Linux/Windows,其它操作系统平台的可变参数函数的实现原理大体相似。1. 基础知识 如果想要真正理解可变参数函数背后的运行原创 2013-08-10 17:51:04 · 16003 阅读 · 0 评论 -
【Linux笔记】linux系统下链接可执行文件时,linker如何查找共享库
当要编译的可执行程序依赖共享库时,linker按下面所示顺序查找其依赖的库。下面的内容出自gcc manual,作为笔记,记录于此。The linker uses the following search paths to locate required shared libraries. 1. Any directories specified by -rpath-link op原创 2014-12-24 16:08:46 · 1639 阅读 · 0 评论 -
OpenSSL中RC4加解密过程调研
最近项目用到rc4加密数据,对其实现过程做了基本调研,在此记录一下初步调研结果。 首先shell中man RC4,了解其基本函数调用方法,知道了怎么用,但对其实现原理还有疑问,继续调研 然后google一把ssl rc4,发现这篇文章讲得比较清楚了: http://blog.youkuaiyun.com/k1988/article/details/4854369 本地写原创 2013-03-16 14:05:41 · 6038 阅读 · 0 评论