内存管理相关的几个函数

一、内存管理基础 win32中的内存管理是分层次的,系统提供了几组层次不同的函数来管理内存,它们是 标准内存管理函数、堆管理函数、虚拟内存管理函数和内存映射文件函数。 windows充分利用了80X86处理器保护模式下的线性寻址机制和分页机制,这些机制是 win32内存管理的基础。 1)虚拟内存管理函数:管理虚拟内存,主要用于保留/提交/释放虚拟内存,在虚拟内存 页上改变保护方式、锁定虚拟内存页,以及查询一个进程的虚拟内存等操作,这是一组位于 底层的函数。 2)堆管理函数:堆的主要功能是有效地管理内存和进程的地址空间。win32中,进程可以 使用的整个地...
declarefly 发布于 2014-02-09 11:23 | 阅读 2513 次 | 评论 0 条

IP、ICMP、UDP、TCP 校验和算法

以前看计算机网络相关的书,每次看到IP或者UDP报头校验和时,都一瞥而过,以为相当简单,不就是16bit数据的相加吗。最近在研究《TCP/IP详解 卷1:协议》这本书,看到校验和是16bit字的二进制反码和(晕,以前都没注意原来是反码和,看来以前看书不仔细啊!罪过,罪过~~),觉得很奇怪,为什么会用反码和,而不是直接求和呢?(因为我认为TCP/IP协议里面的算法和思想一般都是非常经典的,人家这么做一定有原因的)下面就来探索一下这个校验和算法具体怎么实现的。 首先,IP、ICMP、UDP和TCP报文头部都有校验和字段...
declarefly 发布于 2014-02-08 23:02 | 阅读 5017 次 | 评论 0 条

位运算,算术、逻辑运算详解-java篇

/** * 功能: * 位运算符,原码、反码、补码规则: * 1.二进制的最高位是符号位:0表示正数,1表示负数 * 2.正数的原码、反码、补码都一样 * 3.负数的反码=它的原码符号位不变,其他位取反 * 4.负数的补码=它的反码+1 * 5.0的反码,补码都是0 * 6.java没有无符号数,换言之,java中的数都是有符号的 * 7.在计算机运算时候,都是以补码的方式来运算...
徐守威 发布于 2014-02-08 19:25 | 阅读 1416 次 | 评论 0 条

MFC中的_T宏

Windows使用两种字符集ANSI和UNICODE, 前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。 而后者是双字节方式,方便处理双字节字符。 Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。_T一般同字常数相关,如_T("Hello")。如果你编译一个程序为ANSI方式,_T实际不起任何作用。 而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。 _T()和_L()...
declarefly 发布于 2014-02-07 15:24 | 阅读 3441 次 | 评论 0 条

简单工厂模式

计算器的实现: 1)业务逻辑代码 /************************************************ Class: 运算类 Description: 各种运算的父类,提供公共接口 ************************************************/ class COperation { public: double m_nFirst; double m_nSecond; public: virtual double GetResult() { return 0; } ...
declarefly 发布于 2014-02-06 22:47 | 阅读 1460 次 | 评论 0 条

netstat命令详解

netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息, 语  法:netstat [-acCeFghilMnNoprstuvVwx][-A网络类型>][--ip] 补充说明:利用netstat指令可让你得知整个Linux系统的网络情况。 参  数: -a或--all 显示所有连线中的Socket。 -A网络类型>或--网络类型> 列出该网络类型连线中的相关地址。 -c或--continuous 持续列出网络状态。 -C或--cache 显示路由器配置的快取信息。 -e或--exten...
declarefly 发布于 2014-02-06 22:17 | 阅读 2250 次 | 评论 0 条

select模型服务器端和客户端代码

使用VC6.0编译。为了测试方便,服务器端只接收一次数据,当客户端关闭后,服务器端也随之关闭。 服务器端代码: #include "../common/InitSock.h" #include <stdio.h> CInitSock theSock; //加载套接字库 int main() { USHORT nPort = 4567; //此服务器监听的端口号 //创建监听套接字 SOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); so...
declarefly 发布于 2014-02-06 22:11 | 阅读 3680 次 | 评论 0 条

二分法查找-java案例详解

/** * 功能:二分查找 * 基本思想: * 假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较, * 如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的 * 前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到 * 找到为止。 * 作者:徐守威 */ package com.xushouwei; p...
徐守威 发布于 2014-02-06 21:10 | 阅读 1183 次 | 评论 0 条

插入排序法-java、

/** * 功能:插入排序法 * 基本思想:把n个待排序的元素看成一个有序和无序表,开始时有序表中只包含一个元素, * 无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码 * 依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有 * 序表。 * 作者:徐守威 */ package com.xushouwei; ...
徐守威 发布于 2014-02-06 19:27 | 阅读 2308 次 | 评论 0 条

虚函数 原理

虚(virtual)函数的一般实现模型是:每一个类(class)有一个虚表(virtual table),内含该class之中有作用的虚(virtual)函数的地址,然后每个对象有一个vptr,指向虚表(virtual table)的所在。 请允许我援引自深度探索c++对象模型一书上的一个例子: class Point { public: virtual ~Point(); virtual Point&amp; mult( float ) = 0; float x() const {...
declarefly 发布于 2014-02-06 13:07 | 阅读 2163 次 | 评论 0 条

C++中public,protected,private访问

第一:private, public, protected 访问标号的访问范围。 private:只能由1.该类中的函数、2.其友元函数访问。 不能被任何其他访问,该类的对象也不能访问。 protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。 但不能被该类的对象访问。 public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。 注:友元函数包括3种:设为友元...
declarefly 发布于 2014-02-05 20:56 | 阅读 2165 次 | 评论 0 条

VC6.0的INTERNAL COMPILER ERROR错误 (转)

今天复习关于运算符重载这一章节,以前学习的时候用的是gcc编译器, 在VC6.0的时候会遇到莫名其妙的问题: --------------------Configuration: integer1 - Win32 Debug-------------------- Compiling... integer.cpp D:\My Documents\我的工程\integer1\integer.cpp(9) : fatal error C1001: INTERNAL COMPILER ERROR (compiler f...
declarefly 发布于 2014-02-05 09:37 | 阅读 2881 次 | 评论 0 条

C++代码注释规范(整理)(转)

最近一直在给项目代码加注释,因为结项有一项工程性的要求是注释占到总行数的额50%,这几天可苦了我们几个。前几天为了统一项目组的注释规范,专门整理了一份,以后可能也用得着,放着备份下。 1 源文件头部注释 Ø 列出:版权、作者、编写日期和描述。 Ø 示例: /************************************************* Copyright:bupt Author: Date:2010-08-25 Des...
declarefly 发布于 2014-02-04 17:52 | 阅读 1678 次 | 评论 0 条

Android默认字体甩微软雅黑几条街

微软再这么下去危险了
外部三电铃 发布于 2014-02-03 17:13 | 阅读 2335 次 | 评论 0 条

C/C++内存对齐

一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适...
declarefly 发布于 2014-02-01 23:11 | 阅读 3154 次 | 评论 2 条

用C++实现网络编程---抓取网络数据包的实现方法(转)

做过网管或协议分析的人一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包。抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议、IP、UDP、TCP、甚至各种应用层协议),敏感数据的捕捉等。下面我们就来看看在windows下如何实现数据包的捕获。 下面先对网络嗅探器的原理做简单介绍。 嗅探器设计原理 嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与...
declarefly 发布于 2014-02-01 22:24 | 阅读 5398 次 | 评论 0 条

sscanf 用法(转)

sscanf() - 从一个字符串中读进与指定格式相符的数据。 swscanf()- 用于处理宽字符字符串,和sscanf功能相同。 一、函数原型: int sscanf( const char *, const char *, ...); int sscanf(const char *buffer,const char *format,[argument ]...); buffer存储的数据 format格式控制字符串 argument 选择性设定字符串 ...
declarefly 发布于 2014-02-01 21:42 | 阅读 5626 次 | 评论 0 条

指向类成员的指针

#include <iostream> using namespace std; class c1 { public: int val; c1(int i) { val = i; } int double_val() { return val + val;} }; int main() { int c1::*data; //data member pointer int (c1::*func)(); //function member pointer c1 ob1(1), ob2(2); //create objects data...
declarefly 发布于 2014-02-01 15:56 | 阅读 1247 次 | 评论 0 条

shared_ptr

shared_ptr是一个最像指针的“智能指针”,是boost.smart_ptr库中最有价值、最重要的组成部分,也是最有用的。 shared_ptr实现的是引用计数的智能指针,可以被自由拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0)它时才删除被包装的动态分配的对象。shared_ptr也可以安全地放到标准容器中。 示例1: #include <boost/smart_ptr.hpp> #include <iostream> #include <cassert> using namespace boost...
declarefly 发布于 2014-02-01 10:54 | 阅读 4658 次 | 评论 0 条

scoped_ptr和scoped_array

scoped_ptr不允许拷贝、赋值(因为scoped_ptr同时把拷贝构造函数和赋值操作符都声明为私有的,禁止对智能指针的复制操作),只能在scoped_ptr被声明的作用域使用。除了*和->外也没有定义其他的操作符(不能对scoped_ptr进行++或者--等指针算术操作)。 示例如下: #include <boost/smart_ptr.hpp> #include <iostream> #include <string> using namespace boost; using namespace std; int main()...
declarefly 发布于 2014-02-01 10:22 | 阅读 2628 次 | 评论 0 条