C/C++
文章平均质量分 63
Insider
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内联AT&T汇编用法
AT&T格式汇编语言特点 寄存器前加%,常数前加$索引寻址 寄存器放括号内,索引(偏移量)放括号外 若%ebp值为20, 则8(%ebp) 即 8+20结构asm ( 指令s :输出(可选) :输入(可选) :寄存器修改列表(可选));最基本形式:asm ("movl %eax, %ebx");= asm ("movl %eax, %ebx":::);asm 与 __asm__完全相同原创 2006-11-01 13:15:00 · 931 阅读 · 1 评论 -
CRT堆
N年前,在探讨C++对象创建及管理方法时,写了些代码,管理对象 (factory method、singleton、prototype),发现了windows进程及dll退出时的一些行为及由此引起的问题,本文将问题列举并进行讨论,以下讨论都是以程序静态连接为前提,在本文的最后将会回过头来讨论这个大前提,并提出一些解决问题的方法。CRT堆首先CRT就是C RunTime的缩写,意思是C运行库转载 2012-09-20 13:23:07 · 402 阅读 · 0 评论 -
C++中operator的另一种用法
operator<br />在C++中是重载操作符的关键字;<br />还可以用来定义隐式的类型转换。<br /> <br />参见如下代码,类A在需要的时候可以自动的转换成bool。classA{??? public:????? operatorbool(void)????? {????????? returnb;????? }??? private:????? boolb;};voidmain(void){??? Aa;??? boolb;??? if(a)??? {??????? b = ! a;?原创 2011-05-03 14:18:00 · 362 阅读 · 0 评论 -
格式控制符[mark]
_int64类型与long long类型,double类型同为64个字节,十进制大概有20位数,输入输出的格式控制符为"%I64d","%lld","%f"。 符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%usigned -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%转载 2011-06-16 08:58:00 · 533 阅读 · 0 评论 -
Memory Debug Codes
<br />Microsoft's memory management functions often initialize memory with special values. The following article describes frequent used variants. <br />Microsoft Visual C++ Runtime library<br />C runtime library provides it own debug codes:<br /><br />0xC转载 2011-03-25 16:30:00 · 296 阅读 · 0 评论 -
80x86的寄存器
80286 除了具有8086 中全部寄存器外,为了支持多用户、多任务处理的需要,比8086 多了一个16位的机器状态字寄存器MSW、一个16 位任务寄存器TR、3个段描述符表寄存器(LDTR、GDTR和IDTR)和程序不可见的段描述符高速缓冲寄存器。 在80386、80486和Pentium中,除了包括80286所有寄存器外,还将通用寄存器都扩展为32 位,成为EAX、EDX、ECX、EBX、E原创 2006-11-26 21:23:00 · 1656 阅读 · 0 评论 -
80x86的保护虚地址模式
在保护模式下,80x86支持虚拟存储器的功能,一个任务可运行多达16KB个段,每个段最大可为4GB,故一个任务最大可达64T的虚拟地址。保护模式下运行的程序分为4个特权等级:0、1、2、3,操作系统核心运行在最高特权等级0;用户程序运行在最低特权等级3。 80x86中有完善的特权检查机制,既能实现资源共享,又能保证程序和数据的安全和保密、任务之间的隔离。保护虚地址模式下的寻址 与实地址原创 2006-11-26 21:32:00 · 1699 阅读 · 0 评论 -
函数调用约定
函数调用约定在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用 result = function(1,2) 这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道转载 2006-11-03 17:35:00 · 678 阅读 · 0 评论 -
条件编译
1.#ifndef #else /******可选******/ #endif (1)头文件中包含一些常用的常数定义时,为防止包含多个头文件时重复定义,采用条件编译 即没有定义时才定义 #ifndef NULL #define NULL ( (void *)0)原创 2006-11-03 17:06:00 · 655 阅读 · 0 评论 -
IEEE浮点表示法
目录: 1、简介 2、float规格 3、转换例子内容: 1、简介 目前已知的C/C++编译器都是按照IEEE(国际电子电器工程师协会)制定的IEEE浮点数表示法来进行运算的。 这种结构是一种科学表示法,用符号(+或-)、指数和尾数来表示,底数被确定为2。 所以在IEEE浮点数表示法里,一个浮点数为尾数乘以2的指数次方再加上符号。 2、float规格 float 共计32位,4字节 由原创 2006-11-01 12:57:00 · 1852 阅读 · 2 评论 -
堆栈问题
(内容来自于网络,作者不详)一、程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区stack - 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区heap - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)- 全局转载 2006-11-02 13:54:00 · 644 阅读 · 0 评论 -
利用#pragma init_seg 控制构造顺序
前言C++标准中,处于同一编译单元(cpp)的全局对象按其声明次序初始化并倒序析构,但标准中没有定义处于不同编译单元的全局对象的初始化顺序。假如有个Log对象负责程序日志的记录,如果程序结束时,有某个全局对象出现类似于资源释放失败的错误,该对象会调用Log记录错误,这时,Log可能已经被销毁了,这就是所谓的dead-reference问题。使用VC中的#pragma init_seg预翻译 2012-09-25 19:37:44 · 477 阅读 · 0 评论
分享