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

首页 / 操作系统 / 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 ...
开源是Heartbleed漏洞的罪魁祸首?

开源是Heartbleed漏洞的罪魁祸首?

关于Heartbleed漏洞的消息在网络上引发了激烈的讨论。这个从OpenSSL项目中爆出的漏洞让攻击者可以在多种加密传输的网络数据中窃取用户信息,由于OpenSSL被广泛使用在Web服务器、邮件协议、通讯协议中,所以一时间受影响的用户数量难以估计。Heartbleed漏洞事件再次显示出了网络安全的脆弱性,当然对于那些重视安全的厂商来说这也给了它们升级基础服务、增加安全强度的机会。看上去这也许是这次严重的安全威胁带来的为数不多的“好处&rdqu...
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如...
<< 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 >>