C++
文章平均质量分 76
_nMaple_
常用语言C、Perl、Shell,目前涉足Java/Scala开发。酷爱Linux及开源。研究Hadoop分布式和一些大数据技术、框架、工具。对安全方面感兴趣。
展开
-
C++ 模板实现栈数据结构, 用宏将模板类声明与实现分离
今天闲来没事,写了一个STACK,用C++写的,使用了C++中的模板,就是template特性。但是编译时发现实现与声明不能分离。平时写过C++或者C的都知道,习惯性的写法都是将头文件作为函数或变量等的声明,而用源文件作为实现部分,实现头文件中的声明。但泛型却不能支持这样的写法,原因主要是泛型编译时有一个实例化过程,当不能确定 template_class 中的T是什么时,无法找到函数的入口,原创 2015-01-26 15:25:19 · 928 阅读 · 0 评论 -
C语言实现IP地址字符串转化成数值地址(双字)
/* author : ez date : 2015/7/11 describe : Convert IP string into IP numeric*/#include #include int ipstr_to_numeric (const char* _str, int * _addr) { const char* index; uns原创 2015-07-11 22:47:58 · 7573 阅读 · 0 评论 -
WinSock2简单的服务器与客户端(C语言实现)
注: 如果使用MinGW编译,加上选项-lwsock32,否则因为MinGW与VC库调用函数约定不同,其函数符号也不同,无法找到windows SDK中的ws2_32.lib中相应的函数符号。使用此选项则调用MinGW提供的winsock库。-m32指示将目标文件编译成32位程序。client 客户端:#undef UNICODE/* author : ez date原创 2015-07-12 10:14:46 · 2622 阅读 · 2 评论 -
C++ 类的反汇编
C++的类与C++的结构体本质上没有什么不同,唯一不同的可能即是在编译期默认的成员访问全乡不同。当我们new 一个类时,在heap中申请了一块内存区域,用于保存类的实体,并且调用了类的构造函数。当我们调用delete时,调用了析构函数,并调用了heap内存块释放函数。今天随便写了一个简单的类,并对其进行了反汇编分析,由此记录下来,环境如下:操作系统:win7 sp1 x86_64调原创 2015-07-04 15:02:21 · 2470 阅读 · 0 评论 -
C语言各种预编译宏总结
查看gcc所定义的宏的命令:cpp -dM /dev/null命令一: cpp -dM /dev/null命令二: gcc -dM -E - 1:OS MACRO: WINDOWS: _WIN32、WIN32、_WIN64; UNIX: unix、__unix、__unix__; LINUX: linux、__linux、__linux__、__gnu_linux__;原创 2015-07-20 21:35:27 · 5617 阅读 · 1 评论 -
ping工具的C语言简单实现 (ICMP echo)
Windows和Linux 平台下都有一个使用非常频繁的工具: ping此工具主要是检验网络中两节点间传递的数据包是否可达,计算耗时等,其原理是使用ICMP协议发送echo,并得到目的主机的回显。以下是实现了最基本ping 功能的C程序,一共有三个文件:icmphd.h —— 定义报文结构icmphd.c ——实现其声明的函数main.c —— 主函数入口原创 2015-07-20 22:17:18 · 7394 阅读 · 0 评论 -
C static 函数与变量
此文转载于csdn的C/C++ bbs,因为有人提问,得到的答案比较详尽,故记录下来:C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始转载 2015-10-19 10:15:02 · 509 阅读 · 0 评论 -
makefile 笔记(转载)
转载出处: http://blog.csdn.net/edisonlg/article/details/71716411 MakefileGNU make的工作分为两个阶段。在第一阶段,make读取makefile文件、内置变量及其值、隐含规则和具体规则、构造所有目标的依赖关系以及所有目标各自的依赖等。在第二阶段,make决定需要重新构造的目标并使用必要的规则进行工作。m转载 2015-10-28 10:13:32 · 556 阅读 · 0 评论 -
C语言 基础反汇编——for循环
for循环是各种编程语言中常用的语句;其基本的格式为:for (循环变量 ; bool 表达式; 操作) { // TODO ...}一般会需要一个循环变量,这个循环变量一般也会在函数体内完成声明和初始化,若是这样的情况,则这个变量即被作为函数的局部变量处理,分配在栈上。以下编写一个简单的C程序,完成从0 加到 某个数的和运算,并分析其反汇编代码。/* au原创 2015-05-07 12:59:29 · 2867 阅读 · 0 评论 -
计算机整数表示
现实世界的整数,为方便,都以十进制表示。但计算机为了稳定的保持数据,使用两种信号表示状态,也即出现了0和1的数字表示,于是计算机中使用了二进制进行数据存储。整数有正负之分,一般在计算机中,使用一个bit位表示数据的符号,叫符号位。符号位一般在数据的最高位上。当数据是正数时,符号位为0,数据是负数时,符号位为1(用移码表示方式除外)。所以可以通过判断最高位bit知道是否数据是正数。if (d原创 2015-04-09 16:47:57 · 1698 阅读 · 0 评论 -
C 字符串拼接显示
常见的C字符串拼接可能就是将条字符串拼接在一块新的内存区域内,并得到新内存区域的起始地址,这类操作可以自己写,也可以使用C库函数:// C C++ extern char* strcat (const char* dest, const char* src); 将src字符串添加到dest字符串末尾,并返回dest地址;但是此函数可能不包含对dest所指内存空间大小原创 2015-03-16 09:15:10 · 891 阅读 · 0 评论 -
CW程序破解记录——Brad_Soblesky_2
CW程序(Crackme)一般用于给逆向分析初学者练习使用。今天下载了一个CW程序,点击后打开一个窗口,要我输入Serial Number并验证。更奇怪的是,要我输入两个字符串。咋一看还以为是用户名密码,最后破解下来,是把前一个字符串加密后与后一个字符串对比,如果通过,则OK。否则提示错误重试!随便输入报错:一个简单的exe文件,使用了PE查看器,程序并没有压缩,看来可以直接找原创 2015-03-17 19:04:45 · 1651 阅读 · 0 评论 -
gdb 使用笔记
1、 设置断点:b 或者 break , 条件断点: b 例: b main // 在main处设置断点 b func1 // func1处 b 13 // line 13处 b 13 if i = 32 // line 13 处触发断点 , 当局部变量 i = 32 时2、 删除断点原创 2015-03-11 10:04:51 · 447 阅读 · 0 评论 -
Unicode与GBK互转
引用出处 : http://blog.csdn.net/tge7618291/article/details/76085101. gb2312规定: 一个小于127的字符的意义与原来相同, 但两个大于127的字符连在一起时, 就表示一个汉字, 前面的一个字节(他称之为高字节)从0xA1用到 0xF7, 后面一个字节(低字节)从0xA1到0xFE, 这样我们就可以组合出大转载 2015-03-18 21:51:46 · 1407 阅读 · 0 评论 -
Windows 钩子,基本的dll注入
Windows操作系统是基于钩子完成的消息传递与用户交互,它以事件驱动的方式运行。每一个窗口都拥有自己的消息队列,当外部设备触发消息时,消息被发送到系统消息队列,再有操作系统安排将消息发送到特定进程上,这即是消息链。所谓消息钩子,即是在系统将消息发送到用户程序前,提前截获此消息,并进行处理,也可以把它直接发送给用户程序。如:当键盘(外部设备)发生键盘输入时,WM_KEYBOARD消息被添加原创 2015-04-03 21:22:51 · 3754 阅读 · 6 评论 -
Windows MSVC vs MinGW
引用出处:http://www.360doc.com/content/12/0511/08/992979_210235656.shtmlMinGW:c -> o gcc -c a.cc -> exe gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe)o -> exe gcc转载 2015-04-03 22:11:13 · 1540 阅读 · 0 评论 -
getopt 库的使用
getopt是GNU标准库中的一个小工具,一般只用包含其getopt.h 头文件即可使用。getopt 主要用途是提供一系列方法用户处理基于文字模式(控制台)的C/C++ 应用程序,当然在github上你也可以找到其他语言的版本。getopt 最初并不是标准C或C++ 的一部分,所以只能在每一个编写的应用程序中编译这部分代码,一般包含其头文件,getopt2.c和getopt.c 文件。下面介绍其原创 2015-04-18 12:01:32 · 2275 阅读 · 0 评论 -
C指向常量的指针和指针常量
指向常量的指针:此指针指向一个内存区域,这个内存区域(编译期)只读,即是此指针指向的内存区域中的值不能改变。指针常量:此指针是一个常量,即是无法改变指针的值,如果已经保存了内存单元A 的地址,则用内存单元B 的地址赋值给它将不能通过编译。#include int x = 328;int y = 222;// a pointer point to a read-only me原创 2015-04-23 21:37:13 · 580 阅读 · 0 评论