C
caiqi1123
caiqi1123
展开
-
CreateThread后立即CloseHandle,为什么线程还在运行?
最近回顾了下多线程的东西,碰到CloseHandle函数,之前也碰到过,但是自己积累不足,所以也没理解明白。这次再次碰到,想想积累的也差不多了,索性就搞个明白。函数说明BOOL CloseHandle(HANDLE hObject);参数hObject :代表一个已打开对象handle。返回值TRUE:执行成功;FALSE:执行失败,可以调用GetLastErr转载 2017-05-24 11:10:05 · 4796 阅读 · 1 评论 -
Debug和Release区别
VC下Debug和Release区别最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常。网上查找了些资料,在这 罗列汇总下,做为备忘~一、Debug 和 Release 的区别 Debu转载 2012-11-25 13:46:35 · 859 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出
1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该原创 2012-02-13 13:41:05 · 1278 阅读 · 0 评论 -
从 相对路径 说开来
从 相对路径 说开来 在Qt论坛经常看到网友抱怨: •QPixmap("dbzhang800.png") 加载图片不成功 •QFile("dbzhang800.txt") 打开文件失败 •... 遇到这种问题,我一般回答:请注意区分进程的"工作目录"与程序所在的目录 。但这种回答似乎还是显得太苍白了,既然如此,整理一下吧。 •用到了相对路径,你清楚"相对"是相转载 2012-09-25 15:09:25 · 1411 阅读 · 0 评论 -
Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
转载请注明出处http://www.cppblog.com/greatws/archive/2008/08/31/60546.html最近有人问我关于这个的问题,就此写一篇blogAnsi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的是这转载 2012-09-22 19:13:18 · 13028 阅读 · 0 评论 -
c++开源代码相关网站
我是一个C/C++开发者,我收集的代码相关网站也是以C/C++为主的,这都是我在开发过程中查找资料时用到或发现的一些网站。现在我把它们列出来,希望对大家有帮助,也希望能够与大家多多交流代码相关的网上资源。所以我在此抛砖了另外声明一下,那些要收费的源码网站,特别是国内的,绝不收录。因为它们的代码一来无用,二来非法,三来大部分能在网上找到。也建议大家别去那些地方。http://search.c转载 2012-09-18 22:17:11 · 1005 阅读 · 0 评论 -
VC++中调试Release版本时怎样设置断点
步骤如下: 1、在Project Settings里选Settings For为All Configurations。 2、在C/C++标签中,Debug info 选 Program Database。 3、在Link 标签中,Category选 Debug,选中Debug info 复选框和Microsoft format。 现在就可以像在调试版原创 2012-09-16 23:52:21 · 1490 阅读 · 0 评论 -
LNK2005 LNK1169 Error and LNK4098 Warning LINK : warning LNK4075:
指定链接时的运行时库: 各编译选项对应的库情况:编译选项CRTCPPRT说明/MLlibc.lib 单线程库/MLdlibcd.lib 单线程调试库/MTlibcmt.lib转载 2012-10-04 18:51:20 · 1171 阅读 · 0 评论 -
不要混合使用运行时库的静态版本和动态版本
分类: 其他 2011-01-06 10:5223人阅读 评论(0)收藏举报目录(?)[+]Standard C++ LibraryWhat is the difference between msvcrt.dll and msvcr71.dll?What problems exist if an application uses both msvcrt转载 2012-10-04 19:09:43 · 1236 阅读 · 0 评论 -
C Runtime与C++ standard library 与Windows API的关系
crt是系统运行的基础,包含了c常用的函数集,为运行main做了初始化环境变量、堆、io等资源,并在结束后清理。Windows环境下,VC提供的 C run-time library又分为动态运行时库和静态运行时库。动态运行时库主要是DLL库文件msvcrt.dll(or MSVCRTD.DLL for debug build),对应的Import library文件是MSVCRT.LIB转载 2012-10-04 16:10:09 · 1700 阅读 · 0 评论 -
静态库变为动态库,外部符号如何生成?
Q:I have .lib file with its header (.h) file. This file have a few functions that need to be used in C# application.After googling i found that i need to create a dynamic dll from this static libr原创 2012-09-22 01:52:38 · 1005 阅读 · 0 评论 -
void及void指针含义的深刻解析
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int *pint;void *pvoid;pvoid = pint; /* 不过不能pint = pvoid; */如果要将pvoid赋给其他类型指针,则需要转载 2012-08-25 10:50:29 · 610 阅读 · 0 评论 -
对跳出多层循环的方法总结
题目:int aa,bb,cc;for(int a=0;afor(int b=0;bfor(int c=0;c{if(a*b*c==2) {printf("达到目的,就走人~");aa=a;bb=b;cc=c;}}printf("aa:%d\t",aa);printf("bb:%d\t",bb);printf("cc:%d\n",cc);原创 2012-01-03 16:41:50 · 953 阅读 · 0 评论 -
C++中STL的string类模板与MFC中Cstring类区别与联系
最近在做一个linux上的C语言的项目,要频繁的用到char *字符串操作,即用C语言提供的string.h中的标准字符串操作API对字符进行操作,工作量非常的,怀念以前用C++做项目的时候用STL的 string模版类。当然如果是在windows上开发支持MFC的工程,也可以用MFC类库中的Cstring。在Linux上当然不会有微软的MFC 类库了咯,所以只能用标准C++的string类(也就转载 2012-11-24 16:56:06 · 1830 阅读 · 0 评论 -
ASSERT VERIFY TRACE assert
#ifdef NDEBUG#define assert(exp) ((void)0)#else#ifdef __cplusplusextern "C" {#endif_CRTIMP void __cdecl _assert(void *, void *, unsigned);#ifdef __cplusplus}#endif转载 2012-11-25 17:51:58 · 883 阅读 · 0 评论 -
C Runtime Library 的来历
msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C语言库函数,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能. C Runtime Library 的来历, API, STL, MFC, ATL关系 刚接触Windows开发时,为了快速入门查了不少资料,没想转载 2017-05-24 10:33:03 · 710 阅读 · 0 评论 -
静态数组与动态数组
数组是程序设计中是一个非常重要的概念。数组是一个用于收集大量类似数据的容器, 以及其每一个元素能被相同处理过程迭代来处理的一个抽象体。 创建数组一般有三种方式:全局/静态范围的数组,局部变量数组,申请堆空间来创建数组。 其中,全局/静态范围的数组,以及局部变量属于静态数组。 而申请堆空间来创建数组的属于动态数组。 a[7]与p1_a[7]是一样的么?转载 2017-05-12 10:02:05 · 1533 阅读 · 0 评论 -
回车与换行的故事
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“转载 2015-11-20 21:17:14 · 674 阅读 · 0 评论 -
如何在C语言使用位运算实现循环移位
循环移位区别于一般移位的是移位时没有数位的丢失。循环左移时,用从左边移出的位填充字的右端,而循环右移时,用从右边 移出的位填充字的左侧。这种情况在系统程序中时有使用,在一些控制程序中用得也不少。 设有数据说明:a=01111011,循环左移2位正确结果: 11101101 过程:b=a>>(8-2) 用来得到正常左移丢失的位和循环移位后其正确位置b=00000001;转载 2014-09-30 11:10:08 · 1340 阅读 · 1 评论 -
关于printf函数的讨论
2008-01-16 14:03:39| 分类:C语言 | 标签:|举报|字号大中小 订阅(转自china-unix)如何端正学习态度[精华] 简单的说说学习引导的动力! http://www.chinaunix.net 作者:1jjk 发表于:2006-01-07 2转载 2014-04-22 16:45:08 · 782 阅读 · 0 评论 -
C 中 extern 和 static
C语言中:extern :extern(外部引用)可以置于变量或者函数前,以标示变量或函数的定义在别的文件中,在一个文件中用到的extern这些变量或函数是外来的,不是本文件定义的,提示编译器遇到此变量和函数时在其他模块中寻找其定义。注意,只有其他文件中的全局变量才能被其他文件所extern。extern int val;注: 此处的函数类型可以省略,即extern转载 2012-06-07 19:04:31 · 850 阅读 · 0 评论 -
fopen打开文件时位置指针的问题 .
#include int main(void){ int ch; FILE *fp; char fname[]="IN.DAT"; char tempch; fp=fopen(fname,"w"); if (fp!=NULL) { printf("以W方式打开,位置:%d\n",ftell(fp)); fprintf(fp,"%s","open转载 2013-06-13 15:39:46 · 8117 阅读 · 0 评论 -
获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数 .
bool CtestDlg::GetXMLMessage(void) { char cModulePath[MAX_PATH] = {0}; ::GetModuleFileName(NULL, cModulePath, MAX_PATH); ::PathRemoveFileSpec(cModulePath); char cCurrentP转载 2012-11-23 07:20:42 · 1925 阅读 · 0 评论 -
C和C++混合编程(error C2059: syntax error : 'string')
C和C++混合编程extern "C"表示编译生成的内部符号名使用C约定。C++支持函数重载,而C不支持,两者的编译规则也不一样。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:void foo( int x, int y ); 该函数被C编译器编译后在符号库中的名字可能为_foo,而C++编译器则会产生像_foo_int_int之类的名字(不同的编译器可能生转载 2013-05-30 20:35:22 · 1917 阅读 · 0 评论 -
c语言文件中EOF和feof
C语言文件操作解析(五) 在C语言中,有个符号大家都应该很熟悉,那就是EOF(End of File),即文件结束符。但是很多时候对这个理解并不是很清楚,导致在写代码的时候经常出错,特别是在判断文件是否到达文件末尾时,常常出错。1.EOF是什么? 在VC中查看EOF的定义可知: #define EOF (-1) EOF只是代表一个整形常量-1。因转载 2013-03-18 15:42:38 · 1439 阅读 · 0 评论 -
fprintf 与 fwrite 区别很大
今天在实验中发现了这个问题,查了资料:fscanf和fpintf是一对,用fprintf写的必须用fscanf来读。fread和fwrite是一对,用fwrite写的必须用fread来读。同样的数据,使用fprintf和fwrite写下去的是不一样的,但是使用其相应的读命令读上来的数据会是一样的。 文件格式:文本文件(ASCII文件)和二进制文件。我们平时能够用记事本看的文件就转载 2013-03-18 15:58:02 · 2247 阅读 · 0 评论 -
优秀程序员不得不知道的20个位运算技巧
目录(?)[+]获得int型最大值另一种写法另一种写法C语言中不知道int占几个字节时候获得int型最小值另一种写法获得long类型的最大值C语言版JAVA版乘以2运算除以2运算乘以2的m次方除以2的m次方判断一个数的奇偶性不用临时变量交换两个数面试常考C语言版通用版一些语言中得分开写取绝对值某些机器上效率比n0 n-n 高取两个数的最大值某转载 2013-01-05 10:07:21 · 594 阅读 · 0 评论 -
__cdecl __fastcall与 __stdcall区别
C++ Calling Convention调用约定:__cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,2、原创 2012-06-27 10:06:07 · 833 阅读 · 0 评论 -
回调函数总结
回调函数、消息和事件例程 调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,调用者可以随时跳转至此段代码的起始地址,执行完后再返回跳转时的后续地址。CPU为此准备了现成的调用指令,调用时可以压栈保护现场,调用结束后从堆栈中弹出现场地址,以便自动返回。借堆栈保护现场真是一项绝妙的发明,它使调用者和被调者可以互不相识,于是才有了后来的函数和构件,使吾辈编程原创 2012-06-27 09:45:53 · 1478 阅读 · 0 评论 -
文本文件与二进制文件、文本方式与二进制方式
学习C++的时候,再次接触到这两个概念——文本文件、二进制文件。 在网上查了些资料,在这里分享。我喜欢搞清楚所学习技术的所有概念,这的确需要不少时间,但我乐此不疲,因为我为学到新的知识而开心~ 下面是我整理的参考资料: ---------------------------------------------------------------转载 2012-05-30 12:59:32 · 985 阅读 · 0 评论 -
c/c++/vc的经典学习网站(陆续添加中)
http://www.vckbase.com/原创 2012-03-19 10:26:59 · 680 阅读 · 0 评论 -
Memory Management Functions综述
This topic describes the memory management functions:General Memory FunctionsData Execution Prevention FunctionsFile Mapping FunctionsAWE FunctionsHeap FunctionsVirtual Memory FunctionsGlobal an原创 2012-03-29 15:07:17 · 965 阅读 · 0 评论 -
BITMAPFILEHEADER和BITMAPCOREHEADER区分
在OS/2样式的DIB内,BITMAPFILEHEADER结构后紧跟了BITMAPCOREHEADER结构,它提供了关于DIB图像的基本信息。 typedef struct tagBITMAPCOREHEADER // bmch { DWORD bcSize ; // size of the structure =转载 2012-03-29 15:04:10 · 1382 阅读 · 0 评论 -
LocalAlloc,VirtualAlloc,malloc,new的异同
1. 首先我们来看HeapAlloc:MSDN上的解释为:HeapALloc是从堆上分配一块内存,且分配的内存是不可移动的(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的 空间利用起来,从而导致分配失败),该分配方法是从一指定地址开始分配,而不像GloabalAlloc是从全局堆上分配,这个有可能是全局,也有可能是 局部。函数原型为:LPVOIDHeapAlloc(转载 2012-03-27 15:05:52 · 751 阅读 · 0 评论 -
动态分配变长的二维数组方法
方法一:#include #include void** malloc2d(int w, int h, int size){ int j; int rowSize = w * size; int indexSize = h * sizeof(void *); void **a = (void **) malloc(indexSize + h * rowSize);原创 2012-02-09 21:22:16 · 1140 阅读 · 0 评论 -
如何区分“动态库的导入库”与“静态库”
通过命令: >lib /list Demo.lib 如果该 Demo.lib 是静态库,输出如下:>lib /list Demo.libMicrosoft (R) Library Manager Version 8.00.50727.42Copyright (C) Microsoft Corporation. All rights reserved../De转载 2012-02-13 13:13:26 · 784 阅读 · 0 评论 -
为什么头文件中都有 #ifndefine #define #endif
许多人都知道,下面的语句把.h文件包括起来,目的是为了避免重复包含: #ifndef _my_head_file_h #define _my_head_file_h ... ... ... #endif 问题是:头文件一般都是变量、函数的声明,重复声明并没有问题啊! 例1: typedef void myfunction(); typed原创 2012-02-13 09:51:51 · 5633 阅读 · 0 评论 -
printf格式串中的%f到底是float还是double?实验来证明!
问:有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢?答:printf的%f说明符的确既可以输出float型又可以输出double型。 根据"默认参数提升"规则((Default Argument Promotion): 如果表达式是不用原型控制的函数调用中的参数,或表达式显示为原型参数表中"..."部分的参数,则先转换表转载 2011-12-08 21:21:58 · 1751 阅读 · 0 评论 -
图像编程的好帮手-四大图像库:OpenCV/FreeImage/CImg/CxImage
图像编程的好帮手-四大图像库:OpenCV/FreeImage/CImg/CxImage 2011-05-19 16:34:33| 分类:机器视觉 | 标签:|字号大中小 订阅转自 http://hi.baidu.com/xiaocuiman/blog/item/6e267c2bc4b1883f5243c108.html1.对OpenCV转载 2011-11-09 21:08:41 · 1272 阅读 · 0 评论 -
标准C++的一些约定
标准C++的一些约定 1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++03,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。 2. C++/CLI 和 C转载 2011-11-07 22:31:03 · 443 阅读 · 0 评论