vector作为参数传递到dll问题

最近的一个项目中遇到了调用别人的sdk接口(dll库)而传给我的是一个vector指针,用完之后还要我来删除的情况。这个过程中首先就是在我的exe中将其vector指针转为相应指针再获取vector中相应的数据问题,始终都获得不了正确的数据,要么就是一些非法的数据;另一个问题就是delete这个指针时候会产生相应异常(针对这个问题的思考:如果EXE和DLL都链接到DLL的C/C++运行期库,那么代码将能够很好地运行.但是,如果两个模块中的一个或者两个链接到静态C/C++运行期库,那delete的操作就会失败.)。这叫一个折腾的纠结啊。搜罗了一些网络资料以备以后的参考学习: ...
2014-07-28 20:50 | 阅读 4393 次 | 评论 0 条

虚函数 原理

虚(virtual)函数的一般实现模型是:每一个类(class)有一个虚表(virtual table),内含该class之中有作用的虚(virtual)函数的地址,然后每个对象有一个vptr,指向虚表(virtual table)的所在。 请允许我援引自深度探索c++对象模型一书上的一个例子: class Point { public: virtual ~Point(); virtual Point& mult( float ) = 0; float x() const {...
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种:设为友元...
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...
2014-02-05 09:37 | 阅读 2881 次 | 评论 0 条

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

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

C/C++内存对齐

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

sscanf 用法(转)

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

vc6.0下编译boost1.34.1

今天在同学的帮助下,成功的在vc6.0中安装和编译boost库,遇到不少问题,并解决之,把过程大概写一下,以便以后参阅: (主要参考文章:http://h-lm.spaces.live.com/blog/cns!C523F565A10E3B66!749.entry http://blog.csdn.net/liroket/archive/2009/06/10/4257308.aspx) 据说c6.0不支持目前比较新版本,如:boost1.36。这里给出VC6.0编译boost1.34.1的流程。 1....
2014-01-29 22:39 | 阅读 2049 次 | 评论 0 条

删除文件

使用remove(filename) #include <stdio.h> #include <stdlib.h> #include <ctype.h> int main(int argc, char *argv[]) { char str[80]; if(argc != 2) { printf("usage: xerase <filename>\n"); exit(1); } printf("Erase %s? (Y/N):", argv[1]); gets(str); if(toupper(*str) == 'Y') ...
2014-01-28 23:47 | 阅读 1058 次 | 评论 0 条

C指针——函数指针(转)

函数名与函数指针 一 通常的函数调用 一个通常的函数调用的例子: //自行包含头文件 void MyFun(int x); //此处的申明也可写成:void MyFun( int ); int main(int argc, char* argv[]) { MyFun(10); //这里是调用MyFun(10);函数 return 0; } void MyFun(int x) //这里定义一个MyFun函数 { printf(“%d\n”,x); } ...
2014-01-28 00:46 | 阅读 1186 次 | 评论 0 条

C++ 字符串的格式化(转)

C++格式化字符串(续) 2. 一些特殊规定字符 ━━━━━━━━━━━━━━━━━━━━━━━━━━ 字符 作用 ────────────────────────── \n 换行 \f 清屏并换页 \r 回车 \t Tab符 \xhh ...
2014-01-28 00:45 | 阅读 8879 次 | 评论 0 条

C++小技巧(转)

1、获取当前系统时间: [cpp] view plaincopy SYSTEMTIME systime; GetLocalTime(&amp;systime); char str_time_name[MAX_PATH]; sprintf(str_time_name,"%d-%d-%d %d:%d:%d.jpg",systime.w...
2014-01-28 00:44 | 阅读 1747 次 | 评论 0 条

木马编程

1、消息炸弹 [cpp] view plaincopy #define UNICODE #define _UNICODE #include <stdio.h> #include <tchar.h> #include <windows.h> #include <Lm.h> ...
2014-01-28 00:43 | 阅读 5283 次 | 评论 0 条