linux编程
文章平均质量分 92
ppipp1109
积累,进步
展开
-
浮点数双精度,单精度以及半精度知识总结
最近工作中遇到一个16位半精度浮点数的问题,纠结了很久,特此研究了一下,总结在此:1.单精度(32位)浮点数的结构:名称 长度 比特 位置符号位 Sign(S): 1bit (b31)指数部分Exponent(E): 8bit (b30-b23)尾数部分Mantissa(M): 23bit (b22-b0)其中的指数部分(E)采用的偏置码(biased)的形式来表示正负指数,若E<127则为负的指数,否则为非负的指数。注意:%f输出float...原创 2021-08-07 21:50:11 · 11561 阅读 · 2 评论 -
linux gcc 编译错误小问题 备忘(持续更新)
linux下编译c++程序遇到 error: ‘thread’ is not a member of ‘std’的错误原因:因为GCC/G++默认的-std(即C++语言标准)不是C++11,在这里默认的是C++98。解决:需要显式地开启,即添加-std=c++11参数g++ client.c -o client 命令后面加上-std=c++11Linux下undefined reference to ‘pthread_create’问题解决问题的原因:pthread不是linu..原创 2020-07-07 00:20:50 · 1266 阅读 · 0 评论 -
TCP socket 中的长连接与短连接的区别
1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接首先模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息原创 2020-07-02 14:54:04 · 2863 阅读 · 0 评论 -
coredump 使用总结
1. core dump简介:Acore dumpis the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other k...原创 2019-10-04 11:37:29 · 3644 阅读 · 0 评论 -
linux 下 alarm(), setitimer 定时器与 POSIX 定时器 timer_settime()对比总结 (下)
上一篇 linux 下 alarm(), setitimer 定时器与 POSIX 定时器 timer_settime()对比总结 (上)总结了 alarm 和setitimer定时器的用法和注意事项。alarm不适用于精度要求比较高的场景,而setitimer也有一个缺点:因为setitimer 是配合SIGALRM中断信号使用的,而SIGALRM的中断信号会终止sleep,因为sleep就是用...原创 2019-09-16 14:47:30 · 3191 阅读 · 1 评论 -
linux 下 alarm(), setitimer 定时器与 POSIX 定时器 timer_settime()对比总结 (上)
1. alarm() 函数适用于精度要求不高的场景,比如几秒。函数原型:unsigned int alarm(unsigned int seconds);函数说明:该种定时器方法是通过alarm()函数和signal()函数配合完成,alarm函数用来定时,当到达定时的时间后,内核会发送SIGALARM信号给进程,默认会结束进程。也可以通过signal函数为信号SIGA...原创 2019-09-16 11:44:26 · 1641 阅读 · 0 评论 -
程序或-内存区域分配(五个段)
一.在学习之前我们先看看ELF文件。ELF分为三种类型:.o 可重定位文件(relocalble file),可执行文件以及共享库(shared library),三种格式基本上从结构上是一样的,只是具体到每一个结构不同。下面我们就从整体上看看这3种格式从文件内容上存储的方式,spec上有张图是比较经典的:如上图: 其实从文件存储的格式来说,上面的两种view实际上是一样的,Segmen...转载 2018-10-29 11:28:11 · 323 阅读 · 0 评论 -
内存管理中的代码段、数据段,栈,堆
1.函数代码存放在代码段。声明的类如果从未使用,则在编译时,会优化掉,其成员函数不占代码段空间。全局变量或静态变量,放在数据段,局部变量放在栈中,用new产生的对象放在堆中,内存分为4段,栈区,堆区,代码区,全局变量区BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称...转载 2018-10-29 11:26:36 · 1846 阅读 · 0 评论 -
堆和栈区别 学习整理1
有些地方还没有完全理解收藏学习堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3...转载 2018-10-29 11:24:38 · 231 阅读 · 0 评论 -
数据段、代码段、堆栈段、BSS段 学习整理
今天写程序的时候发现生成的exe比前两天的大了很多,故上网查了一下内存相关知识,总结一下5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自自用户输入的数据等。不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些确实按需要动态分配和回收的。对于任何一个普通进程来讲,它都会涉及到5种不同的数据段。...原创 2018-10-29 10:35:32 · 2429 阅读 · 0 评论 -
GNU中的 gcc 与 g++区别
GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。gcc是GCC中的GUN C Compiler(C 编译器)g++是GCC中的GUN C++ Compiler(C++编译器)就本质而言,gcc和g++并不是编译器,也不是编译器的集合,它们只是一种驱动器,根据参数中要...转载 2018-10-15 17:20:14 · 3695 阅读 · 1 评论 -
基于beaglebone black 理解 ARM-Linux嵌入式系统启动流程
https://blog.csdn.net/zy812248258/article/details/39026081作为一个嵌入式新手,阅读资料之后做一下笔记还是很有必要的,下面从四个阶段来描述嵌入式系统的大致启动流程。如下图所示: 图片引用自OMAPpedia的WIKIhttp://omappedia.org/wiki/Bootloader_Project其他相关参考资...转载 2018-05-07 15:52:39 · 535 阅读 · 0 评论