leon201903091654136
leon201903091654136
全部文章
c
c语言(5)
HAL(1)
java(1)
linux(9)
python(7)
ubuntu(2)
virtualbox(1)
堆栈(1)
嵌入式(6)
嵌入式Linux(2)
未归档(200)
架构师(1)
系统函数(4)
软考(1)
项目管理(1)
驱动程序(2)
归档
标签
去牛客网
登录
/
注册
Leon的博客,分享嵌入式Linux知识
飞翔在嵌入式开发路上的一只黑鸟。。。
全部文章
/ c
(共9篇)
非本地跳转函数setjmp和longjmp
C语言提供了一种用户级的异常控制流形式,称为非本地跳转(nonlocal jump),它可以将控制流直接从一个函数转移到另一个当前正在执行的函数,而不需要经过正常的调用和返回序列。而这些都是通过两组函数实现的。 setjmp函数 首先来看看函数原型: #include <setjmp.h...
2021-01-09
0
833
C程序中常见与内存错误有关的坑
间接引用坏指针 在进程的虚拟地址空间中有很多区域是还没有映射的,如果试图向这些地址进行写或读,可能会引发保护异常或段错误。 一个最典型的例子:假设我们使用scanf函数从键盘输入一个值给变量val。 正确的写法是: scanf("%d", &val); 然而,...
2021-01-09
0
594
各种I/O函数的选用原则
应用程序可以通过诸如open、close、lseek、read、write和stat这样的函数来访问文件或I/O设备。更高级别的还有标准I/O及RIO( CS:AP网站参考代码 ,为了修补read等系统IO函数的不足而撰写的健壮的包装函数,它们自动处理不足值,为读文本行提供一种高效的带缓冲的方法。)...
2021-01-09
0
673
C程序中如何读取目录中的文件并判断文件大小等信息
读取目录内容 应用程序可以用readdir系列函数来读取目录内容。 #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); //成功返回目录指针,失败返回NULL struc...
2021-01-09
0
527
详解高速缓存存储器的3种映射方式
开始的计算机系统中存储器层次包括CPU寄存器、主存(DRAM)和硬盘,后来为了缓解寄存器与主存间速度的差异,系统设计者在它们之间增加了高速缓存(SRAM),它的访问速度几乎可以和寄存器一样快。 随着CPU和主存的性能差距逐渐拉大,后来在原高速缓存(L1高速缓存)和内存之间有增加了L2和L3级高速缓...
2021-01-09
0
437
一文学会GDB操作命令
GDB快速指南 版本 2 (2009 6月 14) 原文 这是一个非常快速的GDB指南,旨在让你开始在终端的命令行下熟练使用GNU调试器gdb。 更多详细信息,查看官方GDB 文档! 此外,一个好的GNU GDB前端是数据显示调试器DDD。 1.编译 您必须告诉编译器使用包含符号调试的...
2021-01-09
0
542
比atoi()函数更健壮的一类包装函数
今天介绍两个函数用以代替库函数atoi()、atol()和strtol()函数,原因是它能提供比库函数更好的错误检查机制。 int getInt(const char *arg, int flags, const char *name); long getLong(const char *arg...
2021-01-09
0
498
关于嵌入式C代码优化的几种方法
1、选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。 在许...
2021-01-09
0
1976
经典生产者-消费者问题解析
1.生产者-消费者问题 生产者和消费者问题在现实系统中是很普遍的。例如在一个多媒体系统中,生产者编码视频帧,而消费者消费(解码)视频帧,缓冲区的目的就是减少视频流的抖动。又如在图形用户接口设计中,生产者检测到鼠标和键盘事件,并将其插入到缓冲区中。消费者以某种基于优先级的方式从缓冲区中取出这些事件并...
2021-01-09
0
449