
C/C++基础知识
SURE_bd
这个作者很懒,什么都没留下…
展开
-
转载:c++内存泄露机制
<br />对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如 Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较成熟,但是在c/c++领域的发展并不顺畅,虽然很早就有人思考在C++中也加入GC的支持。现实世转载 2011-05-10 16:15:00 · 12133 阅读 · 2 评论 -
malloc和free工作原理
http://blog.sina.com.cn/s/blog_54d63a8b0100gpwz.html一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了N转载 2011-09-23 17:08:35 · 1676 阅读 · 1 评论 -
extern C
http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式转载 2011-09-23 15:56:22 · 542 阅读 · 0 评论 -
2路插入排序
void CInsertionSort::Path2Insertion(void){ //元素0是哨兵。 const int count = 9, length = count -1; int L[count] = {0, 49, 38, 65, 97,转载 2011-09-25 15:54:31 · 3502 阅读 · 12 评论 -
判断操作系统是16位还是32位的
这个问题有点模糊,因为用sizeof来判断等都是来测试的编译器的类型。不使用sizeof的方法:16位的系统下,int i = 65536;cout << i; // 输出0;int i = 65535;cout << i; // 输出-1;32位的系统下原创 2011-09-28 14:12:36 · 3610 阅读 · 0 评论 -
C++中final类的实现
namespace Private{ class NonDerivableHelper { NonDerivableHelper() {} friend class NonDerivable; }; } #ifdef NDEBUG #def转载 2011-09-29 10:23:13 · 5895 阅读 · 0 评论 -
虚继承和虚基类的本质
http://www.cppblog.com/chemz/archive/2007/06/12/26135.html虚继承和虚基类的定义是非常的简单的,同时也是非常容易判断一个继承是否是虚继承的,虽然这两个概念的定义是非常的简单明确的,但是在C++语言中虚继承作为一个比较转载 2011-09-29 11:30:59 · 673 阅读 · 0 评论 -
位拷贝、值拷贝、深拷贝、浅拷贝
http://blog.youkuaiyun.com/liam1122/article/details/1966617为了便于说明我们以String类为例:首先定义String类,而并不实现其成员函数。Class String{public:String(cons转载 2011-09-28 17:20:43 · 1919 阅读 · 0 评论 -
C++类的大小求解须知
首先:我们要知道什么是类的实例化,所谓类的实例化就是在内存中分配一块地址.那我们先看看一个例子:#includeclass a {};class b{};class c:public a{ virtual void fun()=0;};class原创 2011-10-09 16:04:52 · 527 阅读 · 0 评论 -
函数调用方式
__cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 _stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次原创 2011-10-23 10:42:56 · 621 阅读 · 0 评论 -
链接器的使用
许多 Visual C++ 的使用者都碰到过 LNK2005:symbol already defined 和 LNK1169:one or more multiply defined symbols found 这样的链接错误,而且通常是在使用第三方库时遇到的。对于这个问题,有的朋友可能不知其然,而有的朋友可能知其然却不知其所以然,那么本文就试图为大家彻 底解开关于它的种种疑惑。 大家都转载 2011-10-24 10:16:57 · 1270 阅读 · 0 评论 -
C++ const说明
http://blog.youkuaiyun.com/Eric_Jo/archive/2009/04/30/4138548.aspx C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新转载 2011-10-24 09:00:01 · 908 阅读 · 0 评论 -
main函数执行以前
现在最重要的是要跟得上潮流,所以套用比较时髦的话,谁动了我的奶酪。谁调用了我的 main?不过作为计算机工作者,我劝大家还是不要赶时髦,今天Java热,明天 .net 流行,什么时髦就学什么。我的意思是先花几年把基本功学好,等你赶时髦的时候也好事半功倍。废话不多说了。 我们都听说过一句话:“main是C语言的入口”。我至今不明白为什么这么说。就好像如果有人说:“挣钱是泡妞”,转载 2011-10-24 09:37:37 · 1047 阅读 · 0 评论 -
C语言恶心题目
#include void main(){ int a = 0x12345678; int b = 0x567890AB; int c = 0x7890ABCD; char * p = (char*)&a; char * q = p + 2; int x = *(int*)q; printf("x=%X",x);}原创 2011-12-13 18:02:50 · 840 阅读 · 0 评论 -
常见处理器大小端
处理器 操作系统 字节排序Alpha 全部 Little endianHP-PA NT Little endianHP-PA UNIX Big endianIntelx86 全部 Little endian <-----x86系统是小端字节序系统Motorola680x() 全部 Big en原创 2011-12-13 19:03:08 · 2704 阅读 · 0 评论 -
VS2008快捷键大全
Ctrl+m+Crtr+o折叠所有大纲Ctrl+M+Crtr+P: 停止大纲显示Ctrl+K+Crtr+C: 注释选定内容Ctrl+K+Crtr+U: 取消选定注释内容Ctrl+J : 列出成员 智能感知Shift+Alt+Enter: 切换全屏编辑Ctrl+B,T / Ctrl+K,K: 切换书签开关Ctrl+B,N / Ctrl+K,N: 移动到下一书签Ctrl原创 2012-01-09 11:46:47 · 801 阅读 · 0 评论 -
语义分析
语义分析是编译过程的一个逻辑阶段, 语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。语义分析是审查源程序有误语义错误,为代码生成阶段收集类型信息。比如语义分析的一个工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译转载 2011-09-22 16:39:55 · 2262 阅读 · 0 评论 -
语法分析
在计算机科学和语言学中,语法分析(英:Syntactic analysis,也叫 Parsing)是根据某种给定的形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。语法分析器(Parser)通常是作为编译器或解释器的组件出现的,它转载 2011-09-22 16:36:04 · 1110 阅读 · 0 评论 -
#define
#define的注意事项:#define后面不要加分号,有的说是出于规范来考虑,有的是为了宏定义引用的时候需要在后面加分号。那如果这样呢?#define JJ(a,b); printf(a,b);原创 2011-05-06 00:00:00 · 957 阅读 · 0 评论 -
bitset 用法整理
构造函数bitset b; b有n位,每位都为0.参数n可以为一个表达式.如bitset b0;则"b0"为"00000"; bitset b(unsigned long u); b有n位,并用u赋值;如果u超过n位,则顶端被截除如:bitsetb0(5);则"b0"为"0010原创 2011-07-24 16:30:02 · 676 阅读 · 0 评论 -
讲讲volatile的作用
http://blog.21ic.com/user1/2949/archives/2007/35599.html 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地转载 2011-08-01 13:01:38 · 502 阅读 · 0 评论 -
C 99的新特性
http://blog.163.com/zhaojie_ding/blog/static/172972895201151101223231/C99出来很久了,好像现在还在谈论一个10多年前的标准显得有点过时。不过现实是:关于C99新增的特性,许多用C用了N年的人其实还都不清楚转载 2011-08-05 08:42:02 · 1681 阅读 · 0 评论 -
STL rebind
http://topic.youkuaiyun.com/u/20080226/04/d3187cbf-c72e-4f29-b6f0-ed05e1f65f95.htmlrebind的本质应该这么说:给定了类型T的分配器Allocator=allocator,现在想根据相同的策略转载 2011-09-06 08:41:56 · 4581 阅读 · 1 评论 -
Using auto_ptr Effectively
http://www.gotw.ca/publications/using_auto_ptr_effectively.htm#2Most people have heard of the standard auto_ptr smart pointer facility, bu转载 2011-08-10 09:32:09 · 866 阅读 · 2 评论 -
C语言中如何在main函数开始前执行函数
http://blog.youkuaiyun.com/solosure/article/details/6144954 有时间分析下!在gcc中,可以使用attribute关键字,声明constructor和destructor,代码如下:view plaincopy转载 2011-08-14 11:47:10 · 860 阅读 · 0 评论 -
attribute用法
http://blog.chinaunix.net/space.php?uid=20556798&do=blog&cuid=500457 GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function转载 2011-08-14 11:43:58 · 1903 阅读 · 1 评论 -
C++中的预处理指示和宏
(一)基本知识 预处理器指示符以“#”号开头标识,处理这些指示符的程序叫做预处理器。 #include指示符读入指定文件的内容,它有两种格式: #include #include "my_file.h" 如转载 2011-08-14 15:02:11 · 932 阅读 · 0 评论 -
C语言声明
C语言的声明比较复杂,到现在还有一些声明搞得不是很清楚,正好有点时间,把C的声明复习一下,记一下自己的复习笔记吧。1, 解读C声明的方法 在《C专家编程中》介绍了一种方法用来分析C语言的声明,还是很有效果,不过脑子不好使,老爱忘记,现在把这段秘诀贴在这里:-原创 2011-08-17 14:46:42 · 743 阅读 · 0 评论 -
malloc与new的区别[转贴]
new/delete Allocate/release memory Memory allocated from 'Free Store' Returns a fully typed pointer. new转载 2011-09-13 20:10:19 · 798 阅读 · 0 评论 -
浮点数的表示方法
Java 语言支持两种基本的浮点类型: float 和 double ,以及与它们对应的包装类 Float 和 Double 。它们都依据 IEEE 754 标准,该标准为 32 位浮点和 64 位双精度浮点二进制小数定义了二进制标准。IEEE 754 用科学记数法以底数为原创 2011-09-18 20:58:52 · 22263 阅读 · 8 评论 -
C语言中有符号数和无符号数的比较
一个小程序,#include int main(){ if(-1L < 1U) printf("true"); else printf("false"); return 0;}结果是false,因为有符号数原创 2011-09-19 18:59:14 · 2202 阅读 · 0 评论 -
C&C++编译连接过程
详解link 有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那转载 2011-09-22 15:51:10 · 848 阅读 · 0 评论 -
词法分析器
词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行语法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称 Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分转载 2011-09-22 16:27:29 · 2102 阅读 · 0 评论 -
makefile
本文推荐了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile。 在使用 Makefile 之前,只需对它进行一些简单的设置即可;而且一经设置,即使以后对源程序文件有所增减一般也不再需要改动 Makefile。因此,即便是一个没有学习过 Ma转载 2011-09-22 15:54:27 · 3147 阅读 · 0 评论 -
C++ STL vector:sizeof(vector)
int的大小是4,定义vector vec,vec中有一个元素,sizeof(vec)=20,如果有1000个元素,则sizeof(vec)是多少?#include #include using namespace std;int main(){ vector vec; for(int i=0;i<100;i++) { vec.push_back(i); cou原创 2012-08-12 15:28:16 · 13965 阅读 · 1 评论