C/C++
tanglanting12
在为成为一名架构师而努力
展开
-
C++ new运算符
new运算符 可以使用new运算符来动态建立对象,用new关键字建立对象时,同样地也要自动调用构造函数,以便完成成员的初始化。具体步骤: (1)首先在堆内存中分配一个空间; (2)然后调用构造函数初始化对象的成员; (3)返回该动态对象的起始地址给栈空间的变量,使该变量指向堆内存的空间。 例子:class转载 2013-10-11 00:19:22 · 961 阅读 · 0 评论 -
大量的数据中除去其中有同样数的数据(树递归的一个应用)
要求:1---1000000 中由于想11,22,..,110,101,..这类数都被去除掉了。所以只剩下:1,2,3,...,10,12,..21,23...等等,要求输入一个数x,即找x位置对于去除后的集合中的哪儿元素;思路:由于是数据多,如果根据传统思想进行暴力对于每个数据进行处理后让后进行定位查找就效率太低了:因为要对每个数进行判断其中有没有重复的数据如125033000要变量原创 2013-10-14 17:05:58 · 1024 阅读 · 0 评论 -
C++四种强制转型
一、C 风格(C-style)强制转型如下: (T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个转载 2013-10-06 19:56:34 · 974 阅读 · 0 评论 -
C语言中的动态内存分配函数
语言cleaknullstruct目录(?)[+]malloccallocreallocfree动态内存分配即分配内存大小在运行时才确定,一般在堆中分配。C语言动态内存分配相关的函数。malloc #include void * malloc (size_t size);malloc的使用比较直接,一个成功的malloc调用返回分配的si转载 2013-10-03 10:04:58 · 859 阅读 · 0 评论 -
复习常用的汇编指令
复习常用的汇编指令 注:该部分参考《天书夜读:从汇编语言到windows内核编程》谭文,邵坚磊著的第一章部分。1.1用VC 6.0查看汇编代码 在VC 6.0下创建工程,并建立1.cpp源文件。如下: #include int main(){ return 0;} 设置断点,打开菜单“Debug” 下的“Wind转载 2013-09-18 09:49:24 · 999 阅读 · 0 评论 -
返回值为类名的虚函数 覆盖
class A {public: int numA;public: A(int n):numA(n) { } virtual A* print(A* a) { cout return a; }};class B: public A {public: int numB;public: B(int n):A(7), numB(n) {原创 2013-08-23 19:32:52 · 1124 阅读 · 0 评论 -
无符号数陷阱Unsignged C语言
第一个概念:常量和常量表达数的区别 127常量 -127 是常量表达式 用int32位来表达很大的数如-212324324324234 由于 212324324324234已经越过了边界了,所以它会转为unsigned long 类型 那么就是- ul的情况了这个是会自动装换的 有点像-1u=2(32)-1是个正数了 那么-*****原创 2013-08-16 01:40:31 · 1057 阅读 · 0 评论 -
C/C++堆、栈及静态数据区详解
C/C++堆、栈及静态数据区详解 本文介绍C/C++中堆,栈及静态数据区。 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。下面分别来介绍: 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,转载 2013-10-05 22:15:18 · 800 阅读 · 0 评论 -
gcc 编译一个C文件的过程分析,动态链接生成
#gcc hello.c该命令将hello.c直接生成最终二进制可执行程序a.out这条命令隐含执行了(1)预处理、(2)汇编、(3)编译并(4)链接形成最终的二进制可执行程序。这里未指定输出文件,默认输出为a.out。 从上面我们知道GCC编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。GCC编译C源码有四个步骤:预处理-----> 编译 ----转载 2013-10-02 22:39:22 · 872 阅读 · 0 评论 -
c++对象模型系列
一、指针与引用一 概括指针和引用,在C++的软件开发中非常常见,如果能恰当的使用它们能够极大的提 高整个软件的效率,但是很多的C++学习者对它们的各种使用情况并不是都了解,这就导致了实际的软件开发中经常会内存泄漏,异常抛出,程序崩溃等问题。对 于C和C++的初学者,那更是被它们搞的迷迷糊糊。本篇作为[深入C++]系列的第一节,我们就带领大家把指针和引用这个基本功练好。二 指针指转载 2013-09-15 11:25:15 · 1318 阅读 · 0 评论 -
C语言指针方面的理解:(更新中)位对齐
int a=5; 26 int *q; 27 q=&a; 28 cout指针指向的地址就是指针指向的东西的首地址&q==&a;原创 2013-09-26 00:29:33 · 858 阅读 · 0 评论 -
gdb一般用法(更新中)
错误类型:1.死循环 ------Ctrl+C 然后list可以找到死循环的位置 2.异常中断 -----可以通过转储核心来进行调试 3.第三种就是和预想不合结果: 断点的方法和下面讲的主要方法:段错误 :一般是越界,访问非法内存空间 信号处理---- 》转储核心 gdb namefile原创 2013-12-13 18:38:25 · 969 阅读 · 0 评论 -
memcpy strcpy strncpy
/* Public domain. */#includevoid*memcpy (void*dest,constvoid*src, size_t len){ char*d= dest; constchar*s=原创 2013-10-03 19:49:46 · 929 阅读 · 0 评论 -
数组名,指针,柔性数组
char str[] = "http://www.xxxxx.com";//str数组名是个标识符,代表数组,本身没有空间char *p = str ;//指针是个变量 sizeof(p)=4 sizeof(str)=21a++;编译错误原创 2013-10-02 23:04:53 · 885 阅读 · 0 评论 -
C++ 与java
JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!1.指针 自动内存管理但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。2.多重继承 3.操作符重载原创 2013-08-12 00:55:03 · 571 阅读 · 0 评论 -
strcpy、strcmp、strcat、strlen、strstr,memset
C语言字符串函数[cpp] view plaincopyprint?strcpy的源代码: strcpy的源代码:[cpp] view plaincopyprint?char *strcpy(char *des, const char *src) { assert(des != NULL && src != NULL转载 2013-08-18 00:30:43 · 908 阅读 · 0 评论 -
C++more effective中的用智能指针防止内存的泄露(用对象来表示指针)
#include #include #include #include #include //setw setpre.. setfill#include #include #include//抛出runtimeexcept#include //标准库#include //defines general utilities to manage dynamic me原创 2013-09-20 18:25:42 · 705 阅读 · 0 评论 -
C语言中内存泄漏的检测方法
1.MFC中检测内存泄露:MFC工程文件进行检测的方法加:#ifdef _DEBUG#define new DEBUG_NEW#endifDEBUG_NEW的宏定义在 afx.h中2.纯C++程序内存泄露检测;1.#incldued "stdafx.h"2._CrtDumpMemoryLeads;检测有没有内存泄露;如果要更加详细的信息就要添加更多的#defin原创 2013-09-30 17:38:08 · 1477 阅读 · 0 评论 -
C语言大小端
内容是在作者讲union的时候说的,当时我真的不太理解,只知道是两种存储模式,概念如下大端模式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式:字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。还知道有个方法选择系统是哪种存储模式及两个图:/* 0大端,1小端 */int checkSystem(){ union ch转载 2013-09-27 11:18:00 · 1148 阅读 · 0 评论 -
归并排序的实现
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。[cpp] view plaincopyprint?转载 2013-09-26 16:35:16 · 625 阅读 · 0 评论 -
函数运行用时函数
#include#include#include //for time() & time_t#define N 1000000001typedef bool(*comF)();//函数指针的定义comF comF_a;//计时的函数,以后就只要把函数指针传进去就行了。void time_t1(comF fb){ clock_t start原创 2013-09-17 18:40:41 · 840 阅读 · 0 评论 -
volatile
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。 用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。 没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取转载 2013-10-06 19:51:58 · 480 阅读 · 0 评论 -
C++IO处理
//多种类型之间的自动转换,这样可以很方便实现写和读 一般用stringstream sstream进行处理 ostringstream format_message; format_message istringstream input_istring(format_message.str()); int va原创 2013-09-17 00:48:36 · 650 阅读 · 0 评论 -
c/c++:efficient c++,单线程内存池
c++ efficient 的第六章,看书笔记,顺便说下理解。对于一般直接 new 与delete 性能较差,可以自己管理写内存的申请与释放。版本0:class Rational{public: Rational(int a=0, int b =1 ): n(a),d(b){}private: int n; int d;};转载 2013-09-13 13:06:26 · 829 阅读 · 0 评论 -
C语言 fopen fclose
fopen 2010-06-21 16:49:06| 分类: C|字号 订阅 键盘、显示器、打印机、磁盘驱动器等逻辑设备, 其输入输出都可以通过文 件管理的方法来完成。而在编程时使用最多的要算是磁盘文件, 因此本节主要以 磁盘文件为主, 详细介绍Turbo C2.0提供的文件操作函数, 当然这些对文件的操 作函数也适合于非磁盘文件的情况。转载 2013-09-07 08:27:54 · 752 阅读 · 0 评论 -
搜索引擎最简单的概念(数学之美)
资源下载 建立索引 用到布尔代数的概念 对于每个关键词有一组布尔表达式对于即0 1 对于 如:”我们“这个关键词 它对于的索引为01011001111110001111111010101......... 有多少个有用的网页就有多少位01位数,可能可以根据每个网页的有效率和大多数关键字只出现在一部分网页上的等等特征进行压缩,但是位数还是很原创 2013-08-23 13:49:03 · 711 阅读 · 0 评论 -
预编译的作用和目的
预编译又称为预处理 , 是做些代码文本的替换工作。处理 # 开头的指令 , 比如拷贝 #include 包含的文件代码, #define 宏定义的替换 , 条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。c 编译系统在对程序进行通常的编译之前,先进行预处理。 c 提供的预处理功转载 2013-10-03 16:53:51 · 8065 阅读 · 0 评论 -
Linux下C调用C++接口详解
C++做久了,经常用C++的方式去思考问题,有时候就突然发现自己不太会写C程序了。写程序的时候,难免会用到第三方插件或者是库,而这些插件或者库很多时候都不能完全满足我们的需求,遇到这种情况,如果全是C++,那好办,写个适配器就OK了,关于适配器模式参考我的博客《C++ Adaptor 设计模式》 如果要提供给C程序使用,那就需要自己封装C程序可以使用的库。前几天在CSDN Linux/U转载 2013-10-02 23:24:58 · 1067 阅读 · 0 评论 -
深信服笔试题
struct 内嵌结构体内存存放形式?如果struct里面有struct结构的话那么里面的结构是个整体如:struct example1//8{short a; long b;};struct example2//4+8+4=16{ char c; struct example1 f ; //8 short e; };malloc与n原创 2013-10-02 12:36:11 · 1078 阅读 · 0 评论 -
动态生成二维数组
#include#include#include#define MSGSIZE 16int main(){int **arg;int i,j;arg=(int**)malloc(MSGSIZE*sizeof(int*));for(i=0;i *(arg+i)=(int*)malloc(MSGSIZE*sizeof(int)); for(j=0;j原创 2013-09-24 17:11:24 · 1110 阅读 · 0 评论 -
typename 和 class在模板使用的时候的区别
如果是模板的声明如:template //template 他们两个是没区别的,只是习惯而已:本人习惯用typename因为这个看起来不限于class类;本来在设计C++的时候为了减少关键字是不要设计typename了,但是在内嵌依赖类型中typename 用到所以也就这能增加了typename关键字()。下面有对内嵌依赖类型名讲解;原创 2013-10-04 19:55:59 · 714 阅读 · 0 评论