Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

C++中的空指针和野指针

C++中的空指针和野指针

空指针常量一个表示0值的整数常量,叫做空指针常量。例如:0、0L、1-1(它们都是值为0的整数常量表达式)以及(void*)0、void* NULL 都是空指针常量,空指针常量可以赋值给任何指针类型,因为它是变体类型(void*)。但是我们更倾向于使用NULL表示这个空指针常量。对于其它方式(比如0)来表示空指针常量虽然不会产生任何问题,但是在根本意义上并不符合空指针常量的定义。因为空指针常量的存在意义还在强调它并不指向任何对象(后面会讲细节)。空指针空指...
NULL指针、零指针、野指针

NULL指针、零指针、野指针

1. 空指针、NULL指针、零指针1.1什么是空指针常量0、0L、""、3 - 3、0 * 17 (它们都是“integer constant expression”)以及 (void*)0 (我觉得(void*)0应该算是一个空指针吧,更恰当一点)等都是空指针常量(注意 (char*) 0 不叫空指针常量,只是一个空指针值)。至于系统选取哪种形式作为空指针常量使用,则是实现相关的。一般的 C 系统选择 (void*)0 或者 0 ...
C++ 析构函数&虚析构函数

C++ 析构函数&虚析构函数

1.为什么要定义虚析构函数?如果有一个带有虚函数功能的类,则它需要一个虚析构函数,原因如下:1)如果一个类有虚函数功能,它经常作为一个基类使用;2)如果它是一个基类,它的派生类经常使用new来分配;3)如果一个派生类对象使用new来分配,并且通过一个指向它的基类的指针来控制,那么它经常通过一个指向它的基类的指针来删除它(如果基类没有虚析构函数,结果将是不确定的,实际发生时,派生类的析构函数永远不会被调用);基类有虚析构函数的话,最底层的派生类的析构函数最先...
对Java中传值调用的理解

对Java中传值调用的理解

今天写这篇博文的原因是因为昨天晚上和同学就Java函数中传参方式讨论了一下,因为大家都是大学毕业之后就再也没有用过Java,所以还是有很多东西没有深入了解,也借此给自己补一下这方面的空缺。Java以引用的方式操作对象实例可以确认的是Java中操作对象的方式是以引用的方式操作对象。为了更深刻的了解这点我写了如下代码:首先定义一个自定义类型public class Person {String name;Person(String name){ this.na...
ARM-Linux汇编语法及它和ADS汇编转换的问题

ARM-Linux汇编语法及它和ADS汇编转换的问题

第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。一. Linux汇编行结构任何汇编行都是如下结构:[:] [} @ comment[:] [} @ 注释Linux ARM 汇编中,...
C语言字节对齐

C语言字节对齐

文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如...
Linux协议栈查找算法优化随想

Linux协议栈查找算法优化随想

Linux的网络协议栈实现可谓精确却不失精巧,不必说Netfilter,单单说TC就够了,但是有几处硬伤,本文做一个不完备的记录,就当是随笔,不必当真。0.查找的种类Linux协议栈作为一个纯软件实现,保留了硬件接口,但是本文不涉及硬件。在Linux的协议栈实现中,由于没有硬件电路的固化,查找算法是难免的,比如路由查找,邻居查找,conntrack查找,socket查找,不一而足。事实上,协议栈作为一个公共组织,为所有的数据包服务,如果一个数据包到达协议栈...
Linux环境编程:获取网卡的实时网速

Linux环境编程:获取网卡的实时网速

在Windows下面,我们可以看到360或者是qq安全卫士的“安全球”,上面显示实时的网速情况。那么在Linux里面如何获取网卡的实时网速?其实原理很简单,读取需要获取网速的网卡在某段时间dT内流量的变化dL,那么实时网速就出来了,Speed = dL / dt。Linux在ifaddrs.h中提供了函数:/* Create a linked list of `struct ifaddrs" structures, one for ...
Linux编译curl库的动态库so

Linux编译curl库的动态库so

curl库是一个很强大的http开源库,c++里面能够很方便的和http服务器交互。最近项目开始内测,开始接登录和充值的SDK,选择了使用curl库来和第三方http服务器交互。在Windows下还是很容易使用,如何使用的案例比比皆是,而且很容易就找到已经编译好的动态库进行测试,但是最后在Linux下部署的时候,发现不好找已经编译好的so库文件,最后没办法只好自理更生。下载了源码下来看,配置文件看得一塌糊涂,在网上查了一些资料,也很少找到有用的信息,最后结...
Linux下在C语言中获取硬盘大小

Linux下在C语言中获取硬盘大小

由于系统中没有现成的代码可以直接获取某个硬盘的大小,此时可以借助popen,sscanf,fdisk命令共同完成硬盘大小的获取。工件原理如下,在Linux中执行fdisk -l命令,获取硬盘的详细信息,然后在C程序中通过popen将信息获取,然后用sscanf将相关信息进行处理,得到硬盘的大小。代码如下:int get_system_tf_capacity(double *capacity){if (capacity == NULL) return -1;...
Linux下串口通信编程

Linux下串口通信编程

由于串口通信需要自己写代码进行测试,同时要轮询测试各波特率是否工作正常。按照网上的代码,Linux下运行后总是或多或少有一些问题,后来借鉴APUE中关于tty_raw代码部分进行修改,终于可以正常运行,通信不丢数,不修改数据。同时在测试数据位为5,6时发现结果不正确,然后与其它同事了解后,发现串口下数据位5bit代表只会发送一个字节5bit。而不会自己进行拆分然后重组,得到原来的数据。例如,发送0xff,数据位5时,收到0x1f,数据位6时,收到0x3f,...
Linux文件锁flock,检查程序是否已经运行

Linux文件锁flock,检查程序是否已经运行

在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。flock,建议性锁,不具备强制性。一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flock只是用于检测文件是否被加锁,针对文件已经被加锁,另一个进程写入数据的情况,内核不会阻止这个进程的写入操作,也就是建议性锁的内核处理策略。Lin...
<< 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 >>