- 博客(27)
- 资源 (10)
- 收藏
- 关注
转载 LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
为了满足程序代码国际化的需要,业界推出了Unicode标准,它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。 LPWSTR与LPCWSTR由此产生,它们的含义类似于LPSTR与LPCSTR,只是字符数据是16位的wcha
2014-12-19 13:41:23 585
转载 解释:内存溢出、内存泄露、内存越界、缓冲区溢出、栈溢
内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。一个盘子用尽各种方法只能装4 个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出.内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(del
2014-12-19 13:24:24 2886
原创 【开发日记】调用方释放DLL中申请的内存
问题描述:C#调用C++的dll,传入一组数据,返回处理后的数据以及一些信息字段。但是,返回的内容是不定长的,也就是dll内部要进行动态内存申请。那么问题来了,C#怎么接收一个大小不确定的变量?使用完这些数据后,怎么在C#里面释放其内存?前一个问题的危险是,该段内存的大小,调用方事先是未知的不能进行初始化,这可能会导致缓冲区溢出问题。目前的解决方法只能够是调用方预先分配一个足够大的内存
2014-12-19 10:53:26 3676
转载 C/C++ 笔试、面试题目大汇总
1.求下面函数的返回值(微软)int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为
2014-12-19 10:23:59 610
转载 new创建类对象
转自:http://blog.163.com/zhuandi_h/blog/static/18027028820129169538815/一、new创建类对象与不new区别下面是自己总结的一些关于new创建类对象特点:1、new创建类对象需要指针接收,一处初始化,多处使用2、new创建类对象使用完需delete销毁3、new创建对象直接使用堆空间,而局部不用new定
2014-12-18 18:01:22 1925
转载 CString截取字符串全攻略
例程1:(csdn) 文件xxxx.dll去掉后面的.dll 方法1、 char str[] = "xxxx.dll" char*p; p=strrchr(str, '.'); *p = 0; 方法2、 CString str="xxxx.dll"; int n = str.ReverseFind('.') str = str.Left(str.GetLe
2014-12-18 16:58:53 5397
转载 mfc-编辑框赋值和取值
三种方法:1、SetWindowText() 和GetWindowText()建一个对应 IDC_EDIT1的控制型变量,如m_edit1,m_Edit1.SetWindowText("Hello"); 或者GetDlgItem(IDC_EDIT1)->SetWindowText(str);2、SetDlgItemText()和GetDlgItemTex
2014-12-18 16:34:39 15813
转载 mfc-CFileDialog类
CFileDialog* dlg = new CFileDialog(TRUE,"(*.*)|*.*",NULL,4|2,"任意文件(*.*)|*.*||"); //新建CFileDialog对象dlg->m_ofn.lpstrInitialDir="I:\\project\\"; //指定初始目录CString mPath;if (IDOK==dlg->DoModal()){
2014-12-18 16:24:53 1266
转载 把matlab的.m编译为.exe
方便执行matlab的脚本代码,不用每次运行都打开matlab主程序。1,在命令窗口输入deploytool,然后出现新建项目的对话框,输入名字(随意),确定;2,在随后出现的“Build”选项卡中,“add main file”,选中需要编译的.m文件;下面的“add files/folders”可以选择资源,如exe的图标或gui;3,选择右上方的Build按钮,等待Build
2014-12-18 15:24:33 1619
原创 【算法】Fractional Multiscale Processing
Fractional Multiscale Processing(FMP),分数多尺度处理为了较好地渲染一幅图像中比较难处理的区域,譬如亮度突变的区域,我们应用了一种新的数学算法——分数多尺度处理。算法的基本思想是,一个滤波器分解为多个基滤波器,基滤波器独立对图像进行处理,互不干扰。这样做的好处是,我们可以更自然地描述灰度的变化,避免出现伪影。FMP无需经过窗位调节来增强图像的可视效果。N
2014-12-18 10:10:55 1176
原创 【HSA】Heterogeneous Systems Architecture
感觉自己始终有一天要用到这个东东,HSA的好处是无缝调用GPU资源,不需要再经过显存的调度,不但编程简单了,代码效率也大大提高了。毕竟图像处理很依赖并行运算,特别是高分辨率下的应用需求。说白了也就是一个运算工具,底层的工作已经由强大的架构师们搞定了。这个东东提出来很久了,2012年。现在主要用在游戏产业,以及部分实时图像处理应用当中。AMD异构系统首席架构师Phil Rogers表
2014-12-16 11:11:11 1109
原创 由#pragma once说起
对于不是计算机专业毕业的我,没有系统的理论体系,很多时候项目需求拿来就用,边用边学,碰到细节性的问题,非常棘手!对于#pragma once,用是会用,但不能说出个所以然。#pragma once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个杂注了。#ifndef,#define,#endif是C/C++语
2014-12-16 11:03:42 601
原创 【算法】Fractal dimension
偶然接触到Fractal dimension,分维这一概念,可以用到数据挖掘、模式识别、图像处理中,或许对于项目开发有借鉴作用。资料:http://wenku.baidu.com/view/584b4167f5335a8102d22060.htmlhttp://wenku.baidu.com/view/7a329b0203d8ce2f006623b9.html?re=view
2014-12-12 10:35:23 3224
原创 【学习OpenCV】xml的读写
把中间变量或者结果保存在xml里面,便于观察或者在别的代码里调用。CV有xml接口,可以直接把CV里面的数据结构写进xml,非常方便。用到的是class FileStorage具体介绍:http://docs.opencv.org/modules/core/doc/xml_yaml_persistence.html里面有例程简单的例子:导出数据Mat lut
2014-12-10 10:38:36 1112
原创 【算法】数据结构——查找
查找:http://blog.csdn.net/hguisu/article/details/7776091需求:由于要对16位灰度图进行伽马校正,将当中比较耗时的pow函数转换为LUT操作。由于16位图LUT长度为65536,比较大,用顺序查找法的复杂度为O(N),用二分法则为O(log2(N))
2014-12-09 14:55:42 597
原创 为什么opencv用GPU实现比用CPU实现的慢?
打算通过OpenCV的GPU模块优化现有代码的运行效率,怀抱着美好愿望开始了代码的改写工作。改写的过程并不顺利,遇到了不少问题。例如,gpu模块提供的接口非常坑爹,相当一部分不支持浮点类型(像histogram、integral这类常用的都不支持);又如,遇到阈值判断的地方,就必须传回cpu处理,因为gpu函数都是并行处理的,每改写完一个算法模块,就测试一下运行效率,有的时候是振奋人心,有的时候则
2014-12-08 15:36:54 20884 8
转载 C++的异常
C++的异常处理 : http://blog.csdn.net/daheiantian/article/details/6530318实例:http://blog.163.com/tfn2008@yeah/blog/static/1103213192012525111142849/
2014-12-08 10:28:19 565
原创 VC++追踪代码运行时间
为了方便调试,自己编写了一个探测代码运行时间的类。该类能够实现us级的精确延时,对于一般的算法应用(ms级别)足够了。主要用到windows的API,以下是代码:DetectTime.h#pragma once#include class DetectTime{public: DetectTime(void); ~DetectTime(void);p
2014-12-07 15:54:45 1051
原创 【学习OpenCV】矩阵操作的函数
OpenCV里面存在大量的矩阵操作函数,这使得在C++环境里的编程风格与matlab非常相似,在编写涉及矩阵的代码时带来了莫大的方便。OpenCV - Operations on Arrays 对数组(矩阵)的一些操作Function (函数名)Use (函数用处)Author : Ggicci QQ : 771017478 / 85
2014-12-04 16:58:46 1766
原创 序列化通信协议
不同编程语言间的交互,可以通过文件的形式,更准确应该叫做通信协议。现在有不少的结构化数据存储格式可以完成这一任务,如xstream,jackjson,jdk,hessian,facebook的thrift,google protocol buffer序列化原理:http://blog.chinaunix.net/uid-27105712-id-3266286.html几种序列化协议(p
2014-12-04 11:16:59 1206
原创 C#与C++交互之——参数传递
《精通.NET互操作》读书笔记,该书详细讲述了.Net与C/C++的交互技术托管代码和非托管代码的交互技术有3种:平台调用(PInvoke)、C++ Interop、COM Interop平台调用(PInvoke)其中,PInvoke最简单,但只能调用函数,不能调用类。但有一个折衷的办法,就是在C++里面定义一系列函数,里面调用相应的类,暴露给调用方(托管语言)
2014-12-04 09:39:20 9693
原创 【学习OpenCV】CV库的调用机制
OpenCV说白了就是dll库,众所周知,C++调用dll的方式分隐式和显式两种,而CV用的正是前者。使用CV库,有两个常见步骤:1、编码阶段,在创建新项目的时候,需要添加相应的引用目录、库目录、依赖项;2、发布阶段,需要把exe和dll放在同一个目录下运行。这两点做好了,就确保能够正常使用CV库,其实也无需理会什么dll调用方式;只是,最近在用C#调用C++的模块,里面用了CV库
2014-12-03 10:05:07 3174
原创 【开发日记】C#调用C++图像处理算法(opencv)
我用C++开发算法,同事用C#实现业务逻辑。我是第一次做C#和C++的交互,如今遇到问题。问题:手头有一个C++算法类,打算通过dll调用函数的方式,在C#中实现该算法。具体就是写个函数,函数内部调用了算法类;C#用DllImport调用该函数。结果,报错找不到入口。已排除DllImport错误使用的可能,因为把函数内部调用算法类的部分去掉,C#那边是可以正常运行的,说明是算法类的问题。既
2014-12-02 14:22:18 5270 2
转载 使用VS2012生成和调用DLL文件
一:生成DLL创建DLL工程 文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以) 填写项目名称myDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。 到这里DLL工程就创建完毕了,下面新建两个文件myDLL.cpp和myDLL.h。 myDLL.cpp内容如下:
2014-12-02 11:20:50 6453
转载 常量指针(const*)和指针常量(*const)
int a;int * const p = &a //指针常量,*p可以修改*p = 8;(OK) p不可以修改 p++(ERROR)int a,b;const int *p = &a;//常量指针 *p不可修改 *p = 8;(ERROR)
2014-12-02 10:33:14 575
转载 static和const修饰的类成员
类的static静态数据成员:class A{ public: static int i ;};初始化方法: int A::k=100; 静态成员变量的初值只应该设定一次,不要把初始化操作放在类的构造函数中,因为构造函数可能一再被调用,也不要放在类的头文件中,因为头文件可能被载入许多地方从而被执行许多次。初始化时必须写上数据类型(int)和类名限
2014-12-01 11:36:27 770
VS2010运行库(包括mfc)
2016-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人