C/C++
文章平均质量分 58
Qinchaowhut
CS
展开
-
静态二维数组与动态二维数组的内存布局
静态二维数组与动态二维数组的内存布局原创 2014-05-26 19:08:37 · 1050 阅读 · 0 评论 -
奇怪的死循环
点击(此处)折叠或打开 //《老码识途》P083 #includestdio.h> int main() { int i; int a[1原创 2014-05-26 19:07:54 · 454 阅读 · 0 评论 -
OPERATOR NEW FUNCTION
//C++ Primer1,The library function operator new and operator delete are misleadingly named. Unlike other operator functions,such as operator=,these functions do not overload the new or delete expres原创 2014-05-26 19:08:14 · 376 阅读 · 0 评论 -
引用
//参考《C++反汇编与逆向分析技术揭秘》//在反汇编下,没有引用这种数据类型。//在C++中,引用和指针没有分别,只是引用是通过编译器实现寻址的,而指针需要手动寻址。//C++为了简化指针操作,对指针的操作进行了封装,产生了引用类型。引用类型在C++中被描述为变量的别名。实际上,引用类型就是指针类型,只不过它用于存放地址的内存空间对使用者而言是隐藏的。----- --------原创 2014-05-26 19:08:03 · 473 阅读 · 0 评论 -
反转链表(递归实现)
反转链表#includestruct ListNode{ int m_nKey; struct ListNode* m_pNext;};void ReverseList(struct ListNode** pHead){ struct ListNode *ReverseHead=NULL; struct ListNode *pNode=*pHead;原创 2015-05-16 16:58:47 · 647 阅读 · 0 评论 -
operator delete异常分析
C++中delete表达式执行的操作是:1,调用析构函数;2,释放对象内存(operator delete(...))。如果父类的析构函数没有声明为virtual函数,且子类中至少存在一个virtual函数,此时将子类的对象地址赋值给父类指针。当对父类的指针执行delete操作时,会调用父类析构函数,然后在释放内存时(即delete表达式执行的操作的2,释放对象内存)出现崩溃。然而如果子类原创 2014-05-25 12:16:15 · 3289 阅读 · 0 评论 -
qsort对动态二维数组进行排序
1,关于网上对于qsort函数对一维数组,二维数组(即字符串,形如char ch[2][6];strcpy(ch[0],"Hello");strcpy(ch[1],"World"); 对”Hello"和"World"排序。)的排序的介绍比较常见,本文介绍了使用qsort函数对动态二维数组(即对字符串进行排序。形如:char**p=new char*[2]; p[0]=new char[6];str原创 2014-08-20 08:58:02 · 1385 阅读 · 0 评论 -
extern "C"
//C++ Primer 第四版 1,C++使用链接指示(linkage directive)指出任意非C++函数所用的语言。 2,链接指示有两种形式:单个的或复合的。链接指示不能出现在类定义或函数定义的内部,它必须出现在函数的第一次声明上。 3,声明非C++函数: extern "C" size_t strlen(const char *);原创 2014-05-26 19:08:18 · 529 阅读 · 0 评论 -
Java 调用C++编译的DLL总结
1,编写调用端代码(文件名:DllCaller.java) package com.whut.qinchao.jni; //qinchao 2013/12/31 public class DllCaller {原创 2014-05-26 19:07:52 · 508 阅读 · 0 评论 -
大端法与小端法互换
以int类型为例: 点击(此处)折叠或打开 void swap1(int *rhs) { unsigned char *p=rhs; unsigned char temp;原创 2014-05-26 19:08:24 · 510 阅读 · 0 评论 -
显示调用析构函数
//C++ Primer//显示调用析构函数的效果是适当的清除对象本身。但是,并没有释放对象所占的内存,如果需要,可以重用该内存空间。 #includeiostream> #includecstdio> using namespace std;原创 2014-05-26 19:08:11 · 798 阅读 · 0 评论 -
成员函数的指针
//C++ Primer 第四版1,成员指针只应用与类的非static成员。static类成员不是任何对象的组成部分,所以不需要特殊语法来指向static成员,static成员指针是普通指针。 2,成员函数的指针必须在三个方面与它所指函数的类型想匹配: A,函数的形参的类型和数目,包括成员是否为const. B,返回类型。原创 2014-05-26 19:08:20 · 415 阅读 · 0 评论 -
求unsigned int i的二进制表示中1的个数
点击(此处)折叠或打开 //转 int fun1(unsigned int i) { if(i2) return i; else原创 2014-05-26 19:08:27 · 846 阅读 · 0 评论 -
局部静态变量的工作方式
//vc6.0 debug//cs218.cpp//参考《老码识途》//知识点:C++语法规定局部静态变量只被初始化一次,采用标志位来实现赋值操作只被执行一次(标志位为0时,表示未初始化,标志位为1时表示已初始化)。------------------------------------------------------------------------------ #原创 2014-05-26 19:08:01 · 379 阅读 · 0 评论 -
C++调用DLL总结
1,编写调用端代码: //main.cpp #include"VrpDll.h"//VrpDll.h放在工程的当前目录。 #include #include using namespace std; #pragma comment(lib,"CppVrpDll.lib") //CppVrpDll.lib放在工程的当前目录,Cp原创 2014-05-26 19:07:58 · 541 阅读 · 0 评论 -
MFC thunk技术模拟
点击(此处)折叠或打开 //参考http://www.cnblogs.com/satng/archive/2010/12/30/2138833.html #includeiostream> using namespace std;原创 2014-05-26 19:08:51 · 587 阅读 · 0 评论 -
欧几里德算法
//数据结构与算法分析 点击(此处)折叠或打开 #includestdio.h> int gcd1(int m,int n)//m>=n { if(n==0)原创 2014-05-26 19:08:31 · 396 阅读 · 0 评论 -
C++对象作为函数参数
关于C/C++中基本类型(如:int,int*等)作为函数参数时,是通过将该变量的值压栈来进行参数传递;本文通过C++反汇编代码分析了当对象作为函数参数时(该形参非引用或指针),参数如何传递以及此时栈帧的结构。原创 2014-08-20 08:58:04 · 2896 阅读 · 1 评论