随笔分类 - C
摘要:本篇文章摘抄于——http://stackoverflow.com/questions/470683/memory-allocation-deallocation-bottleneck,主要讲了C/C++堆内存分配和释放导致性能问题的原因,并给出了基本的解决方案。C/C++堆内存分配和释放,即通过malloc/free或new/delete操作内存,主要会引起两个问题:一是内存碎片;二是堆内存操作需多线程同步,加锁(OS级别)。============================================================================Q:How mu
阅读全文
摘要:C语言中,有时处于效率方面的考虑,采用宏的方式来替代函数。C定义宏时,常采用如下方式:1 #define MACRO_FUNC(arg) do{ \2 ... \3 }while(0)为什么要加do { .. }while(0)这样一段看似毫无用处的代码呢?这是为了保证宏方法(function)和普通方法调用方式的统一。下面来看例子:1 #define FOO(x) foo(x); bar(x);1 if(condition) 2 FOO(x);3 else// syntax error here4 ...;即使加上"{}"都没有用:1 #define FOO(x){ fo
阅读全文
摘要:第一篇C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:intprintf(constchar*format,...);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式:printf("%d",i);printf("%s",s);printf("thenumberis%d,stringis:%s",i,s);一个简单的可变参数的C函数先看例子程序。该函数至少有一个整数参数,其后占位符…,表示后面参数的个数不定。在这个例子
阅读全文
摘要:* 联合联合可以(在不同的时候)保存不同类型和长度的对象的变量,编译器负责跟踪对象的长度和对齐要求。使用联合的目的——一个变量可以合法的保存多种数据类型中任何一种类型的变量。*typedeftypedef类似于#define语句,但由于typedef是由编译器解释的,因此它的文本替换功能要超过预处理器的能力。例如:typedef int (*PFI)(char *,char *);该语句定义了类型是PFI的“一个指向函数的指针,该函数具有两个char*类型的参数,返回值类型为int”。
阅读全文

浙公网安备 33010602011771号