- 博客(21)
- 收藏
- 关注
原创 面试题record
线程 和 进程 联系和区别线程的同步和互斥进程的通讯嵌入式程序跑飞的常见原因和定位方法C语言内存泄漏的常见场景和避免措施linux的系统调度策略
2021-07-20 11:04:53
238
原创 程序员的自我修养--看书总结(更新ing)
对从事linux平台相关开发的程序员,或者是底层编译链接感兴趣的人,《程序员的自我修养》是很值得看的一本中文书。正如书的副标题,“链接、装载与库”是主要的内容。挑了书中感兴趣的部分——linux平台相关内容,前段时间看完了却一直没有复习和总结,现在把书捡起来重新看一遍,做做思维导图,总结下吧。好记性不如烂笔头,时时总结回顾,温故知新。思维导图工具: BlinkMind开源工具github地址: https://github.com/awehook/blink-mind-desktop按照章节进行总结
2021-07-14 19:19:03
231
原创 gcc -D选项 宏定义
用法-Dname 定义宏name,默认定义内容为字符串“1”-Dname=defn 定义宏name,并且内容为defnC语言中使用#define来定义宏,gcc也可以定义宏给源代码使用。不过gcc -D选项就简陋很多,和#define的简单用法是一致的。但是其本质是宏的替换。应该是在预处理阶段直接替换字符。双引号或者单引号并不影响值的设定。还有,这个东西是宏,和C语言中的字符串是两个东西。模块隔离这个东西用得挺多的。参考:https://www.cnblogs.com/amanliket
2021-02-09 14:31:47
1390
1
原创 数组和链表
数组和链表是最常用的两个数据结构了。存储数据各有各的特点数组1.存储空间连续。2.查找效率高。可以直接找到给定地址数据3.数组需要预留空间,可能造成内存的浪费4.插入和删除数据效率较低5.数组在运行阶段空间固定,不利于扩展。链表1.动态申请,内存在堆中,不连续。2.节点通过指针连接接。3.大小不固定,易于扩展,内存资源利用率高4.插入和删除数据方便5.查找数据需要从头遍历,效率较低参考:https://blog.youkuaiyun.com/weixin_51600120/article/d
2021-02-08 22:18:12
154
原创 野指针和悬空指针
概念野指针:不确定其具体指向的指针。“野指针”最常来自于未初始化的指针。悬空指针:最初指向的内存已经被释放了的一种指针。危害指针指向的内存不可控,访问和修改指向的内容会带来不可控影响。处理措施1.指针初始化为null2.申请的内存释放后,指针变量没有立即释放的,要置为null参考:https://www.cnblogs.com/Hijack-you/p/11913618.htmlhttps://www.cnblogs.com/idorax/p/6475941.html...
2021-02-08 21:33:34
188
原创 C语言关键字_record
重要关键字涉及流程和单数据类型的关键字,功能一般都比较简单,在使用过程中很快就会熟悉。下列关键字相对前者来说,功能较多,值得好好学习。externstaticconst次重要关键字typedefsizeofstructunionenumregistervolatile关键字汇总这个链接罗列得非常清楚,大赞~ 借鉴一下https://zhuanlan.zhihu.com/p/77474834C语言关键字auto:声明自动变量;break:跳出当前循环;case:
2021-02-08 17:47:08
2994
原创 c语言程序的编译过程
操作系统:ubantu工具gcc文件:test.cabner@DESKTOP-M6D2HEN:~/mytest$ cat test.c#include<stdio.h>#define MAXC 3#define MAXB MAXC + 1#define MAXA MAXB + 2int main(){ int a = MAXA; return 0;}主要为四个阶段预处理->编译->汇编->连接C语言编译过程分成
2021-02-02 02:13:11
8176
1
原创 可变长数组&&柔性数组结构体成员&&可变长结构体
可变长数组可变长数组是C99相较C89新增的一个特性。{ int n = 10; int str[n];}1.可变长数组无链接性,即只在代码块内作用(函数体内或者局部代码块内)。2.可变长数组不可初始化。3.数组长度在生存周期不可更改。即n的值不影响str的长度。4.可变长数组作为函数形参的时候,[]中使用*,其本质是指针。形参中的数组还可以使用类型限定词const、volatile、restrict和static关键字。参考文章:https://blog.youkuaiyun.com/nash6
2021-02-02 01:09:30
808
原创 安全函数_概念
c标准库的一些函数在使用过程中,面临数组内存越界等安全问题,这些原生的有隐患函数称为不安全函数。为了避免不安全函数的隐患给代码带来各种漏洞,各大厂商基于标准库的函数,进行包装,加上校验和规避的措施,推出安全函数版本。其中比较有名的有windows的安全函数,华为的安全函数。下面就windows的安全函数说一说。vs安全函数在使用vs(Visual Studio) 进行程序开发的使用,如果使用了strcpy等函数,vs会产生告警,提示用_s后缀的函数进行替换。_s后缀的这类函数就是安全函数。各大厂商
2021-01-13 16:25:10
2626
原创 glibc源码-标准库的一些函数
glibc版本:2.32IDE:vscode个人认为比较常用的,可以看看源码的函数,总结下:stdio.h路径:\glibc\libio\stdio.h函数原型功能输入int fprintf (FILE *__restrict __stream, const char *__restrict __format, ...);格式化输出到文件int printf (const char *__restrict __format, ...);格式化输出到标准输出
2021-01-08 23:15:28
1089
原创 glibc源码-libc_hidden_def
glibc版本:2.32在阅读scanf源码的时候,看到ldbl_hidden_def,不明这个宏的意思,于是查阅资料,进行了一番了解。(因为涉及的知识点太过庞大,包含链接,库的加载,函数的调用等等,且当前不从事与这方面的研究,故仅了解下)scanf调用:scanf->vfscanf->__vfscanf_internal.__vfscanf_internal的实现代码有2700行。。。。恐怖。浏览了一遍,没完全读懂,和vfprintf差不多,找到格式化字符,然后调用系统接口读入信
2021-01-07 20:14:05
2370
1
原创 glibc源码-printf
glibc版本:2.32printf1.va_list 数据类型,其实就是void *2.可变参函数的实现三个宏va_start:将arg指向formatva_arg:将arg指向数据类型特定数据类型的参数va_end:将arg置零。不过有看到一个版本展开是只是void 0这四个符号在glibc源码(2.32)的头文件中没有看到具体的定义(展开是什么样)。用了其他的方式调用了gcc或者是linux的头文件,我更倾向于后者。不知道是脚本,python还是其他的手段对stdarg.h-da
2021-01-07 00:07:23
2104
1
原创 vscode插件的使用highlight-words
highlight-words高亮插件,挺好用的。转载请注明:设置快捷键选项详解配置设置
2020-12-23 15:39:04
15650
4
原创 小米空气净化器2S换pm2.5传感器风扇
原创文章,转载请备注:https://editor.youkuaiyun.com/md?articleId=111466293设备:小米空气净化器2s问题:pm2.5的数值显示为0不变,传感器异常.18年年底买了一台净化器,冬天雾霾比较严重,用了一段时间19年年底又拿出来用,发现不能正常显示,数值了.本来想抽时间预约售后修理的,因为新冠搁浅了.20年年底又拿出来用,这个数值显示异常不是太大问题,还是能够正常使用的,但是膈应…咨询了下,因为过保了,修理费加上人工费估计得小200,就不是很想修理了.毕竟不是什
2020-12-21 02:35:13
7960
4
原创 C语言内存管理和垃圾回收策略~
C语言内存管理和垃圾回收策略C语言程序的内存划分垃圾回收策略C语言程序的内存划分一个可执行的C语言程序,在执行的时候,其内存主要分为四个部分。链接:五个部分代码段:存放程序代码的二进制静态区:存放静态变量和静态变量栈:存放局部变量堆:存放动态申请的资源也有说五个段的,都差不多。只不过细分了。链接:五个部分代码段:存放执行代码数据段:存放已初始化的全局变量和静态变量。BBS段:存放为初始化的全局变量和静态变量。栈:存放程序临时创建的局部变量堆:存放进程运行中被动态分配的内存段垃
2020-11-18 15:39:00
1072
原创 phread_create,phread_jion,phread_detach
环境:windows10 linux子系统ubuntu工具:gcc三个函数的头文件:pthread.h头文件:系统标准头文件位置:/usr/include安装库的头文件位置:/usr/local库文件:系统标准库文件位置:/lib /usr/lib用户安装库文件位置:/usr/local/lib可以看到usr和local的目录结构基本类似find ./local -name ...
2020-04-12 23:11:17
390
原创 执行shell脚本的两类方式
执行shell脚本有四种方式1.再当前目录下执行cd /home/abner/workspace/./test.sh2.绝对路径执行/home/abner/workspace/test.sh3.使用bash脚本执行cd /home/abner/workspace/bash test.shsh test.shbash和sh都可以,已经设置了环境变量,所以在任何目录下都可以调...
2020-03-19 12:26:22
295
原创 malloc和free
IDE:codeblocks 简单代码编译还是习惯用这个头文件:stdlib.h1.malloc和free一般成对出现。申请了内存不使用时候需要释放掉。2.free空指针不会有任何操作。https://segmentfault.com/q/1010000003697040例子:#include<stdio.h>#include<stdlib.h>int ...
2020-03-19 12:05:46
2152
原创 const函数形参char *
语言环境:C语言IDE:codeblocks编译器:MinGWconst关键字的这里不做赘余叙述。下面探讨下const修饰char *的函数形参时的三种情况。第一种 const修饰的字符串指针 赋值给 临时变量字符串指针#include<stdio.h>void testfunc(const char *teststr){ char *temp; te...
2020-03-18 11:56:14
2633
1
原创 iphone6 修改版本&&iccid解锁
设备:iphone6卡贴机 IOS12.4.4版本 US.SM运营1.iphone6使用checkra1n工具在linux下越狱越狱教程可以关注艾锋降级或者百度,这个工具降级一键式的很简单。只需要linux环境和工具包2.iPhone6科学上网安装Cydia。手机上checkra1n打开会显示live和devel,我选择的是devel。不清楚两者具体关系。3.打开Cydia搜索安装Ap...
2020-03-15 17:04:27
7111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人