对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。对于不能确定需要占用多少内存的情况,动态内存分配解决了这个问题。
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...
很笨的方法
(写过才能知道,哪些地方,需要注意,开始想的很简单,就三部,写了 一个多小时!!)
void TestMoveRelocDirectory(LPSTR lpszFile)
{
/*
1 新增一个节
2 把重定位的表 移动到那个节中
3 更改标志位
*/
LPVOID pFileBuffer = NULL;
pFileBuffer= ReadPEFile(lpszFile);
if(!pFileBuffer)
{
printf("文件读取失败\n");
return;
}
PIMAGE_DOS_HE...
电脑显示未插入扬声器或耳机要怎么办呢?很多人都喜欢用电脑听歌或者看视频,但是最近有些用户反映说,自己的电脑没声音了,并且在桌面右下角出现了未插入扬声器或耳机的提示,这是怎么回事呢?今天U大侠小编就和大家说说电脑显示未插入扬声器或耳机的完美解决方法。
未插入扬声器或耳机
1、通过下列的操作检查电脑声音无法播放的状态设置,首先右键电脑桌面音量图标,打开了声音对话框;
2、在打开的对话框中,切换到“录制”标签页,在麦克风显示处查看是否显示“未插入”,线路输入处是否也显示“未插入”;
3、接着切换到“播放”标签页,查看扬声器R...
具体创建如何创建def类型的导出表可以直接自己测试
这里只贴 使用的代码
// 20171111_01.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <Windows.h>
#pragma comment(lib,"TestDef.lib")
/*
extern "C" __declspec(dllimport) __stdcall Plus(int x,int y);
extern "...
1 在DLL中新增一个节, 并返回新增的FOA
2 复制AddressOfFunctions 长度:4*NumberOfFunctions
3 复制AddressOfNameOrdinals 长度:NumberOfNames*2
4 复制AddressOfNames 长度:NumberOfNames*4
5 复制所有的函数名
长度不确定,复制时直接修复AddressOfNames
6 复制IMAGE_EXPORT_DIRECTORY结构
7 修复IMAGE_EXPORT_DIRECTORY结构中的
AddressOfFunctions
Ad...
了解表结构,输出信息,一个函数的实现
void printDirectoryRelocTable(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_HEADER pP...