![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C language
mfence
。
展开
-
voliate 会影响什么?
voliate 会影响什么?除了常规的作用,还有那些作用?最近在项目中遇到了一个奇怪德问题,一个iomem的指针,指向了映射的某片空间,程序中需要频繁读取该片空间的某些地址,该项目使用射频芯片实现网络通信,所以在mac层会对数据收发做处理,虚拟一个以太网接口,实现正常的网络通信,在收发的过程中,会频繁读取该指针指向的空间的某些地址,实验过程中,发现该指针使用voliate和不使用voliate时,使用iperf测试出的速率相差很大,没加voliate时,只有3.98Mbits/sec ,加上时,能达到5原创 2020-09-13 10:35:43 · 216 阅读 · 0 评论 -
C语言在子函数中调用malloc申请内存
#include <stdio.h> #include <stdlib.h>#include <string.h>void test1(char **str)...转载 2019-10-28 21:15:10 · 1188 阅读 · 0 评论 -
C语言记录
1.定义一个宏#define swap(x,y)交换x,y的值#include "stdio.h"#define swap(x,y) {\y = x + y ;\x = y - x ;\y = y - x ;\}int main(){ int a = 10; int b = 20; swap(a,b); print...原创 2018-12-03 14:50:37 · 158 阅读 · 0 评论 -
内存对齐
对齐原则:原则1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。原则2:结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)...原创 2018-12-03 13:43:10 · 106 阅读 · 0 评论 -
链表数据反转、链表逆序输出-C语言实现
链表逆序输出元素,采用单、双向链表实现 逆序输出方法又好几种,个人认为,在不开辟其他空间的条件下,实现的原理都是差不多的(使用链表的情况),其根本就是改变链表头,下面的代码在不开辟其他空间的条件实现,另外,编写程序时,特别注意特殊情况下是否能正常运行(其实完全用不到双向链表)双向链表(没有头节点)#include <stdio.h>#include <stdl...原创 2019-01-25 11:30:27 · 3684 阅读 · 1 评论 -
C语言中的联合体 (记录)
在C语言中,一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为:union 共用体名{ 成员列表};结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。...原创 2019-02-18 15:16:56 · 1784 阅读 · 1 评论 -
内存泄漏的场景分析和避免方法总结,C语言内存泄漏详解(转)
大家都知道,在堆上分配的内存,如果不再使用了,就应该及时释放,以便后面其他地方可以重用。而在 C 语言中,内存管理器不会自动回收不再使用的内存。如果忘了释放不再使用的内存,这些内存就不能被重用了,这就造成了内存泄漏。内存泄漏几乎是很难避免的,不管是老手还是新手,都存在这个问题,甚至 Windows 与Linux这类系统软件也或多或少存在着内存泄漏。也许对一般的应用软件来说,这个问题似乎不是...转载 2019-03-07 17:24:11 · 967 阅读 · 0 评论