#include "stdafx.h"
#include "Tools.h"
#include<Windows.h>
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg){
case...
#include "string.h"
class Monster
{
public:
int ID;
int Level;
char Name[20];
public:
Monster(){}
Monster(int ID,int Level,char* Name)
{
this->ID = ID;
this->Level =Level;
memcpy(&this->Name,Name,strlen(Name)+1);
}
};
template<class T>
class Tre...
[该文章已设置加密,请点击标题输入密码访问]
// LinkedList.h: interface for the LinkedList class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_LINKEDLIST_H__4B3074E8_FF2A_4FDE_9798_A2DEC76350C0__INCLUDED_)
#define AFX_LINKEDLIST_H__4B3074E8_FF2A_4FDE_9798_A2DEC76350C0__INCLUDED_
#if _MSC_V...
// Vector.h: interface for the Vector class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_VECTOR_H__4269F728_802C_48DF_A3E7_71483AA2CDA7__INCLUDED_)
#define AFX_VECTOR_H__4269F728_802C_48DF_A3E7_71483AA2CDA7__INCLUDED_
#if _MSC_VER > 1000
#p...
对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。对于不能确定需要占用多少内存的情况,动态内存分配解决了这个问题。
new和delete运算符是用于动态分配和撤销内存的运算符。
一、new用法
1.开辟单变量地址空间
使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的首地址,如果申请不成功,...
很全面的总结,
转载:
https://wuyuans.com/2012/09/cpp-operator-overload
文章如下
c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。
1.一般运算符重载
在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式...
// 20171122_01.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "stdlib.h"
#include "iostream.h"
#include <stdio.h>
struct Base{
virtual void Fn1()
{
printf("Base:Fn1111\n");
}
virtual void Fn2()
{
p...
// 20171122_01.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "stdlib.h"
#include "iostream.h"
#include <stdio.h>
struct Base{
int a;
int b;
virtual void Fn1()
{
printf("1111\n");
}
virtual void Fn2...
好好挣钱
好好磨练自己的技术
我耐得住性子, 我想好好钻研计算机,
可我感觉自己走错了 路, 选错了方向!!
最近工作压力比较大,事情比较多!!
晚上去看了 sablog的个人博客, 想的有点儿多吧
自己也就一个菜鸟, 一个大牛被关进监狱, 自己能感慨些什么呢....
前天,Q说买房子的事情, 看看自己兜里的存款, 想想未来能给燕子带来什么, 我真的感觉有些无力!!
现在自己为未来真的没什么把握, 为了一些鸡毛蒜皮的小事,耽误了太多太多,
刷量平台已经建立起来了, 没有进行推广, 挣钱,, 挣钱, 技术,, 技术,,,
现在心里还是很慌很慌, 什么时候可以自己内心可以真正的不太慌呢...
好庞大的课程体系, 学期七个月
1. 指引篇 328课时(预计两个月)
此阶段主要侧重于培养学员发现问题的能力,并对各大平台各个操作系统有一个整体性认知,迅速建立起较高的计算机素养,并形成对于信息安全核心思想的初步探索及认知,为后续专项课程的学习建立起全局高度,以达到有的放矢的目的。
> C++基础............40课时(将零基础学生带入计算机语言的奇妙世界,此部分主要偏向于编程思想与基础语法)
> C++提高......
测试代码的效果,
只适用于 win自带的 程序
void TestPrintBindImportDirectory(LPSTR lpszFile)
{
LPVOID pFileBuffer = NULL;
pFileBuffer= ReadPEFile(lpszFile);
if(!pFileBuffer)
{
printf("文件读取失败\n");
return;
}
PIMAGE_DOS_HEADER pDosHeader = NULL;
PIMAGE_NT_HEADERS pNTHeader ...
导入表有些复杂,文件与内存中的格式不太一样
理解导入表的结构是关键
void TestPrintImportDirectory(LPSTR lpszFile)
{
LPVOID pFileBuffer = NULL;
pFileBuffer= ReadPEFile(lpszFile);
if(!pFileBuffer)
{
printf("文件读取失败\n");
return;
}
PIMAGE_DOS_HEADER pDosHeader = NULL;
PIMAGE_NT_HEADERS pNTHeader = NULL;
PIMAGE_FIL...
直接更改文件的ImageBase,进行的测试
void testUseReloc(LPSTR lpszFile)
{
LPVOID pFileBuffer = NULL;
pFileBuffer= ReadPEFile(lpszFile);
if(!pFileBuffer)
{
printf("文件读取失败\n");
return;
}
PIMAGE_DOS_HEADER pDosHeader = NULL;
PIMAGE_NT_HEADERS pNTHeader = NULL;
PIMAGE_FILE_HE...