![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 58
徒手写代码
不要在需求明确的时候写代码
展开
-
C语言编译全过程剖析(作者:bpsub)
编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s原创 2011-08-19 00:05:28 · 654 阅读 · 0 评论 -
线程池
#ifndef THREAD_POOL_H#define THREAD_POOL_H#include <sched.h> /* for sched_setaffinity() */#include <sys/syscall.h> /* for SYS_gettid() */#include <unistd.h> ...原创 2019-06-12 15:01:12 · 146 阅读 · 0 评论 -
如何让udhcpc占用更少的内存?
这个问题的表面现象是用system调用的方式执行udhcpc会失败。解释:由于system是通过fork实现的,而子进程会复制父进程的VM空间,当父进程占用较多VM空间,很容易导致system调用失败。其本质是子进程分配VM空间失败导致的。解决方法:执行:echo 1 > /proc/sys/vm/overcommit_memory即可。更好的解决办法是不使用system调用方法,而...转载 2019-05-13 14:41:21 · 555 阅读 · 0 评论 -
gdb用法小结
gdb用法小结--学习Linux程序的开始 一、初始化 输入gdb进入gdb调试环境。或者直接输入gdb + progfile来加载文件。 注意该文件是使用gcc(或g++)编译得到的。为了使 gdb 正常工作, 必须 使你的程序在编译时包含调试信息,编译时必须使用-g参数来。 或者进入gdb环境后,通过命令file + ...转载 2019-05-14 11:43:22 · 466 阅读 · 0 评论 -
cmake 学习笔记(一)
最大的Qt4程序群(KDE4)采用cmake作为构建系统Qt4的python绑定(pyside)采用了cmake作为构建系统开源的图像处理库 opencv 采用cmake 作为构建系统...看来不学习一下cmake是不行了,一点一点来吧,找个最简单的C程序,慢慢复杂化,试试看:例子一单个源文件 main.c例子二==>分解成多个 main.c hello.h hello.c...转载 2019-04-03 18:44:02 · 138 阅读 · 0 评论 -
c/c++ 内存管理
这是我刚开始学编程里整理的一篇总结,主要是来源一本叫《高质量c/c++编程》的书,很多年过去了,重新复习一下。1、malloc()malloc()函数用来分配内存:将总共需要的字节数作为参数传递给该函数,返回值是指向最新分配的内存的指针,而如果内存没有分配好,则返回值是NULL。malloc()的使用技术:some_type*pointer;pointer=malloc(...转载 2019-03-26 17:22:34 · 149 阅读 · 0 评论 -
从Linux程序中执行shell(程序、脚本)并获得输出结果
Contents1. 前言 2. 使用临时文件 3. 使用匿名管道 4. 使用popen 5. 小结1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令...转载 2019-02-15 11:23:49 · 13538 阅读 · 0 评论 -
优秀的程序设计者这样设计传送的报文
面对一个人的大型 C/C++程序时,只看其对 struct 的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的 C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用 struct,怎样用struct 是区别一个开发人员是否具备丰富开发经历的标志。 在网络协议、通信控制、嵌入式系统的 ...原创 2019-01-31 16:56:50 · 460 阅读 · 0 评论 -
理解 Linux 的硬链接与软链接
Linux 的文件与目录现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件的管理...转载 2019-01-08 14:25:59 · 89 阅读 · 0 评论 -
采用dlopen、dlsym、dlclose加载动态链接库【总结】
1、前言 为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续补充。如何将程序设计为插件形式,挖掘出主题和业务之间的关系,需要进一步去...转载 2019-01-11 11:12:24 · 338 阅读 · 0 评论 -
要是面试官再问你智能指针的问题,就拿这篇文章“盘他”!!!
前一段时间,有不少朋友问我关于智能指针的问题,并且反映经常会在面试中被面试官问到,所以今天小豆君就来讲讲我对智能指针的理解,希望能对大家有所帮助既然讲智能指针,我们就先来看看它为什么会出现。1 传统指针存在的问题刚学C++的朋友,要数最令人头疼的问题莫过于指针了。当你在堆上创建了一个对象时,系统就把这个对象的生命期完全交给了你,当用完之后,系统并不会回收资源,而是需要你来释放它。...转载 2019-07-20 11:30:31 · 337 阅读 · 0 评论