当前位置: 首页 > 编程笔记 >

C/C++: Inline function, calloc 对比 malloc

白宏放
2023-03-14
本文向大家介绍C/C++: Inline function, calloc 对比 malloc,包括了C/C++: Inline function, calloc 对比 malloc的使用技巧和注意事项,需要的朋友参考一下

Inline function is like a macro definition. When it was be called in another function, the control right will not be changed to this function. The compiler will just replace the line of inline function with the actual content of the function. We use inline function to eliminate the cost of calling a function.

内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。内联扩展是用来消除函数调用时的时间开销。它通常用于频繁执行的函数。 一个小内存空间的函数非常受益。

带参数的宏定义的一般形式如下:

#define <宏名>(<参数表>) <宏体>

 其中, <宏名>是一个标识符,<参数表>中的参数可以是一个,也可以是多个,视具体情况而定,当有多个参数的时候,每个参数之间用逗号分隔。<宏体>是被替换用的字符串,宏体中的字符串是由参数表中的各个参数组成的表达式。

#define SUB(a,b) a-b

 如果在程序中出现如下语句:

result=SUB(2, 3);

 则被替换为:

result=2-3;

calloc与malloc的区别:

calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。

用法:

void *calloc(size_t n, size_t size);

一般使用后要使用 free(起始地址的指针) 对内存进行释放,不然内存申请过多会影响计算机的性能,以至于得重启电脑。如果使用过后不清零,还可以使用指针对该块内存进行访问.

 类似资料:
  • 本文向大家介绍golang、python、php、c++、c、java、Nodejs性能对比,包括了golang、python、php、c++、c、java、Nodejs性能对比的使用技巧和注意事项,需要的朋友参考一下   本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不得不用神奇的斐波那契算法。可能是比较常用或好玩吧。   好了,tal

  • calloc(配置内存空间) 相关函数 malloc,free,realloc,brk 表头文件 #include <stdlib.h> 定义函数 void *calloc(size_t nmemb,size_t size); 函数说明 calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*s

  • calloc 配置内存空间 相关函数 malloc,free,realloc,brk 表头文件 #include <stdlib.h> 定义函数 void *calloc(size_t nmemb,size_t size); 函数说明 calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*

  • “作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。” 然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。 (1) 最大的障碍在于

  • 我希望下面的代码片段能够使用calloc为五个成员分配内存。 但它似乎分配了五个以上;它分配了六个成员,为什么?

  • 本文向大家介绍c# 反射用法及效率对比,包括了c# 反射用法及效率对比的使用技巧和注意事项,需要的朋友参考一下 反射实例化类 通过反射实例化对象,要比直接 new 要慢 50 倍左右 assembly.CreateInstance 要比 Activator.CreateInstance 慢,主要的性能损耗在 Assembly.GetType 反射调用类的方法 反射得到实例后调用方法和直接调用方法效

  • 描述 (Description) C库函数void *calloc(size_t nitems, size_t size)分配请求的内存并返回指向它的指针。 malloc和calloc的区别在于malloc没有将内存设置为零,而calloc将分配的内存设置为零。 声明 (Declaration) 以下是calloc()函数的声明。 void *calloc(size_t nitems, size_

  • 本文向大家介绍C#中FileStream的对比及使用方法,包括了C#中FileStream的对比及使用方法的使用技巧和注意事项,需要的朋友参考一下 场景 File与FileStream的区别 举例: 将读取文件比作是从A桶往B桶运水。 使用File就是整个用桶倒进去,使用FileStream就是使用水管慢慢输送。 FileStream与StreamReader的区别 FileStream是操作字节