02_C/C++
zztfj
钓鱼
展开
-
C#调用Win32API 的高级用法:结构体内存布局 回调函数 指针参数以及数据类型映射
结构体内存布局:许多受管辖的动态链接库函数期望你能够传递一个复杂的参数类型给函数,譬如一个用户定义的结构类型成员或者受管辖代码定义的一个类成员,这时你必须提供额外的信息格式化这个类型,以保持参数原有的布局和对齐。C#提供了一个StructLayoutAttribute类,通过它你可以定义自己的格式化类型,在受管辖代码中,格式化类型是一个用StructLayoutAttribute说明的结构...原创 2020-02-18 12:48:03 · 1021 阅读 · 0 评论 -
在VC中如何找到崩溃的源头(二)
通过“crash地址 + MAP文件”来定位出错代码位置虽然需要经过比较复杂的地址计算,但却是最简单实现的方式。如果仅仅想通过崩溃地址定位出错的函数,就更加方便了。我在网上找到一个解析MAP文件的小工具,可以非常清晰的列出每个函数的地址,并且可以将分析表格导出为Excel文件。工具下载地址:http://e.ys168.com/?tinyfun,工具目录下VCMapper.exe。 另外原创 2013-03-20 14:29:08 · 999 阅读 · 0 评论 -
“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”的解决办法
VC“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”的解决办法 该问题的原因之一:您的计算机的Windows Installer服务没有开启。其解决方法是打开控制面板→管理→服务,将Windows Installer服务开启,并设为自动,再重启电脑。该问题的原因之二:您的计算机上没有安装Visual Studio的运行库。该应用程序是Visu原创 2012-11-10 12:39:40 · 4775 阅读 · 1 评论 -
在VC中如何找到崩溃的源头
在VC中如何找到崩溃的源头我把这个试验的源代码列出来:const int x =10000;int main(int argc, char* argv[]){ int *y=0; y=(int*)&x; *y=10; return 0;} 我们用Microsoft Visual C++ 6.0(SP5原创 2012-12-15 14:30:49 · 851 阅读 · 0 评论 -
c++标准库——容器类
容器类可以分为两大类和容器适配器:(1)序列容器(Sequence containers)这种容器中的元素是有序的,每一个元素在容器中都有一个确切的位置,这个位置不依赖于元素的值,而是跟放入容器的时机有关。标准的序列容器有三个:vector, deque, list。另外你也可以把字符串(string)和数组(array)看成序列容器。Vectors一个vector用动态数原创 2012-09-25 16:50:16 · 2175 阅读 · 0 评论 -
C++编译器生成的默认函数
C++编译器生成的默认函数话题引入:对象的赋值与复制是如何进行的?他们的区别是什么?如果一个空的自定义类型能否执行这些操作?对象赋值:通过“ =”运算符重载User a(10),b;b = a;对象复制:调用拷贝构造函数User b;User a(b);或者User a = b; //相当于User a(b);也是调用拷贝构造函数 二者的区原创 2012-09-17 15:54:59 · 2860 阅读 · 0 评论 -
C++中函数调用中的内存分配
C++中函数调用中的内存分配一、内存分配 在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题。 C++编译器将计算机内存分为代码区和数据区。很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量。数据区又分为静态数据区、动态数据区,动态数据区包括堆区和栈区。以下是各个区的作用:(1)代码区:存放程序代码;(2)数据区原创 2012-09-17 14:51:12 · 5318 阅读 · 0 评论 -
C/C++动态内存分配和回收
一、C语言动态内存分配 要实现动态内存的分配,除了利用含指针成员的结构体之外,还需利用C语言提供的几个标准库函数。(使用时应包含头文件“alloc.h”或“malloc.h”或“stdlib.h”) 1.malloc函数 函数原型为void *malloc(unsigned int size);在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值原创 2012-09-17 13:28:30 · 4051 阅读 · 0 评论 -
c++的template中的class和typename .
template(模板)是一些函数或者类,这些类中有一些参数的类型没有指定,需要运行时确定。比如:template T add(T a, T b) { return a + b; } 其中T在调用这一函数的时候指定。T可以命名为其他变量,但是习惯上命名为T。T的类型被分类为class(类),但是T也可以不是一个class,上面的例子可以是in原创 2012-09-12 10:07:25 · 932 阅读 · 0 评论 -
VC++加载动态库和静态库
VC++加载动态库和静态库静态库包括.lib和.h文件,在工程中使用静态库分为3步:1、在工程中加入静态库,有两种方法:方法一:项目设置中引用.lib,project-setting-link-object/library modules中添加.lib;(需要在tools/options设置正确的引用路径)方法二:在项目中直接加入lib,project-add to projec原创 2008-09-02 22:39:00 · 3183 阅读 · 0 评论 -
关于VC++中静态库的调用
关于VC++中静态库的调用这个静态库是通过VC++通过生成向导选择win32 Static Library创建的。在这个库的生成向导中有两个选项:1.Pre_Compiled header 是在生成的工程中添加 stdafx.h 预编译头文件2.MFC Support 是在生成的工程中添加对MFC的支持,也就是增加了 #include #include 这两个文件原创 2008-09-02 22:32:00 · 1294 阅读 · 0 评论 -
C++中的构造函数初始化列表的使用和分析
C++的构造函数有三项工作:1、分配空间。2、成员初始化。3、执行初始化函数体。为了提高效率和其他原因,还引入了初始化列表,初始化列表的调用在函数体执行之前被调用,常用于类组合和类继承,仅能用于构造函数和拷贝构造函数。 C++中构造函数初始化列表的使用方法:派生类名::派生类名(基类1 形参,基类2 形参,...基类n 形参,本类形参): 基类1(参数), 基类2(参数), .原创 2008-07-16 11:30:00 · 1214 阅读 · 0 评论 -
C++类继承方式的区别
在C++中,类继承书写方式如下:派生类的声明class 派生类名:继承方式 基类名{ 新增成员声明;};其中,继承方式分为三种:public,private,protected,其区别如下:public继承:1、基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。2、派生类中的成员函数可以直接访问原创 2008-07-16 11:08:00 · 1593 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出(一)
VC++动态链接库(DLL)编程深入浅出(一)1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。[被屏蔽广告] 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中转载 2008-07-09 17:35:00 · 886 阅读 · 0 评论 -
C++ override overload 的区别
override是指在不同作用域中,多个函数原型完全一样,而实现却不同的函数。在C++中,经常发生在类的继承中。当基类中的某个方法是virtual或pure virtual函数时(当然访问权限必须是public或protected,因为从C++设计思想上来讲private的函数不会是virtual的,呵呵),其子类中对该方法的重新实现就属于override。使用时,可以通过基类原创 2008-07-09 10:14:00 · 7783 阅读 · 3 评论 -
Visual C++中的图形特技
文章标题:Visual C++中的图形特技原 作 者:赵敏之原 出 处:不详发 布 者:loose_went发布类型:转载 随着计算机信息表示及实现的多媒体化,在许多学习软件、游戏软件,以及多媒体课件制作软件中,经常使用各种图形显示技巧,如图形的推拉、交错、雨滴状、百页窗、积木随机堆叠等显示模式。这样使画面变得更为生动活泼,更能吸引用户转载 2008-07-08 12:09:00 · 686 阅读 · 0 评论