摘要:
一般认为在c中分为这几个存储区1栈 - 有编译器自动分配释放2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4另外还有一个专门放常量的地方。 - 程序结束释放在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的static变量表 阅读全文
posted @ 2012-02-13 17:29
知识天地
阅读(738)
评论(0)
推荐(0)
摘要:
锁的类型有三种:共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放。排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。更新(U)锁:用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;当被读取的页将要被更新时,则升级为X锁;U锁一直到事务结束时才能被释放。 阅读全文
posted @ 2012-02-13 17:24
知识天地
阅读(21701)
评论(0)
推荐(0)
摘要:
说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行说法二:进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至 阅读全文
posted @ 2012-02-13 17:24
知识天地
阅读(356)
评论(0)
推荐(0)
摘要:
在《数据库原理》里面,对聚簇索引的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索引顺序与数据物理排列顺序无关。正式因为如此,所以一个表最多只能有一个聚簇索引。不过这个定义太抽象了。在SQL Server中,索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。如下图:非聚簇索引聚簇索引聚簇索引与非聚簇索引的本质区别到底是什么?什么时候用聚簇索引,什么时候用非聚簇索引?这是一个很复杂的问题,很难用三言两语说清楚。我在这里从SQL Server索引优化查询的角度简单谈谈 阅读全文
posted @ 2012-02-13 17:23
知识天地
阅读(3117)
评论(2)
推荐(4)
摘要:
C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。。B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种 结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是 利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言( 阅读全文
posted @ 2012-02-13 17:21
知识天地
阅读(47390)
评论(0)
推荐(1)
摘要:
2006-12-21 18:42虚拟键十六进制值十进制值相应键盘或鼠标键VK_LBUTTON011鼠标左键VK_RBUTTON022鼠标右键VK_CANCEL033Ctrl-Break键VK_MBUTTON044鼠标中键VK_BACK088Backspace键VK_TAB099Tab键VK_CLEAR0C12Clear键VK_RETURN0D13Enter键VK_SHIFT1016Shift键VK_CONTROL1117Ctrl键VK_MENU1218Alt键VK_PAUSE1319Pause键VK_CAPITAL1420Caps Lock键VK_ESCAPE1B27Esc键VK_SPACE2 阅读全文
posted @ 2012-02-13 17:18
知识天地
阅读(3474)
评论(0)
推荐(1)
摘要:
字号:大中小 在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte Character Set),这样导致在VC6.0中非常简单实用的各类字符操作和函数在VS2005环境下运行时会报各种各样的错误,这里总结了在Visual C++.NET2005环境中Unicode字符集下CString和char *之间相互转换的几种方法,其实也就是Unicode字符集与MBCS字符集转换。1、Unicode下CString转换为char *方法一:使用API:WideCharToMultiByte进 阅读全文
posted @ 2012-02-13 17:17
知识天地
阅读(379)
评论(0)
推荐(0)
摘要:
在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll、Vertical scroll。.http://blog.sina.com.cn/s/blog_41604f160100877c.html经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。方法一:(当EDIT映射到一CString时)m_String = m_String + sNewString + "\r\n"//自动换行(其中m_String是EDIT筐所关联的CString对象)UpdateData(false);此法只能做到自动换 阅读全文
posted @ 2012-02-13 17:16
知识天地
阅读(3408)
评论(0)
推荐(0)
摘要:
平常使用Open CV时总是跳出一个个窗口,很难将项目进行系统集成,特别是在MFC等Windows环境中加载显示Open CV中的IplImage图像;使用Open CVhighgui.h 中定义的CvvImage类,可以很好的实现Open CV和Windows MFC显示接口;先介绍一下CvvImage类:由于CvvImage是在 highgui.h 头文件中声明的,因此如果您的程序中需要使用,则必须在开头包含此头文件#include <highgui.h>CvvImage对应CImage宏:#define CImage CvvImage注意事项:由于CImage太常见, 很容易 阅读全文
posted @ 2012-02-13 15:13
知识天地
阅读(5592)
评论(0)
推荐(0)
摘要:
如果已经写好了一个C++的类,希望把它做成dll动态链接库,这里介绍一种简单的方法。 1、制作dll 利用VC6新建工程时选择win32 dynamic-Link Library,然后添加头文件和cpp文件。假设类名为exp,添加头文件exp.h,头文件中声明类的定义,添加exp.cpp,其中是成员函数的具 体定义。与一般写类的定义不同,在exp.h中需要写成class __declspec(dllexport) exp{ ...}从而说明以后从dll要被导出的类是哪一个。这样编译完就会产生exp.dll和exp.lib两个文件。 2、dll的调用 当已经生成dll后,可以在其它程序中调用dl 阅读全文
posted @ 2012-02-13 15:13
知识天地
阅读(793)
评论(0)
推荐(0)
摘要:
http://www.freelancer-life.cn/ 阅读全文
posted @ 2012-02-13 15:03
知识天地
阅读(245)
评论(0)
推荐(0)
摘要:
本来下载了visual studio 2008 team suite版,但是由于 Microsoft visual studio web 创作组建安装都是失败,于是只好放弃了team版,去下载professinal版。由于以前用vista的时候安装team版也是有问题,能正常安装但 是无法编译项目。后来去弄了个professional版就好用了,没有什么问题,而且我用professional也是用的正版,因为我用学校的邮箱去 微软可以免费获取序列号。 这次就不行了,下载来了professional版还是有错,于是我去百度搜了一下,发现在某人的博客里面有相关的问题解答。其实按照他的方法做我根本没 阅读全文
posted @ 2012-02-13 15:02
知识天地
阅读(3880)
评论(0)
推荐(0)
摘要:
http://www.yzmsb.com/ 阅读全文
posted @ 2012-02-13 15:02
知识天地
阅读(293)
评论(0)
推荐(0)
摘要:
上次开发DirectShow还是2005年1月,整整两年,今天又重操旧业。这次在VS2005上使用DirectShow,首次编译发现出现以下错误:error C2146: syntax error : missing ';' before identifier 'PVOID64'看了很多关于这个问题的讨论,解答,无非就是改写winnt.h中的代码:原代码:typedefvoid*PVOID;typedefvoid*POINTER_64PVOID64;在这两行代码前增加:#definePOINTER_64__ptr64但这明显是下下之策,而且真正原因没人说的清楚。 阅读全文
posted @ 2012-02-13 15:01
知识天地
阅读(314)
评论(0)
推荐(0)
摘要:
附录6 TMS320C54x 指令系统一览表(按指令功能排列)原文:http://blog.163.com/byl545@126/blog/static/180522812008102171429535/一、算术运算指令1. 加法指令句 法表 达 式说 明字数周期ADD Smem,srcsrc=src+Smem操作数加至累加器11ADD Smem,TS,srcsrc=src+Smem<<TS操作数移位后加至累加器11ADD Smem,16,src[,dst]dst=src+Smem<<16操作数左移16位加至累加器11ADD Smem[,SHIFT],src[,dst] 阅读全文
posted @ 2012-02-13 15:00
知识天地
阅读(10972)
评论(0)
推荐(0)
摘要:
Iplimage To Bitmap (銀展提供)if (ipl->depth == 8){if (ipl->nChannels == 3){return gcnew System::Drawing::Bitmap(ipl->width , ipl->height , ipl->widthStep , System::Drawing::Imaging::PixelFormat::Format24bppRgb ,(System::IntPtr)ipl->imageData);}else{return gcnew System::Drawing::Bitmap( 阅读全文
posted @ 2012-02-13 14:57
知识天地
阅读(314)
评论(0)
推荐(0)
摘要:
刚开始学C/C++时,一直对字符串处理函数一知半解,这里列举C/C++字符串处理函数,希望对初学者有一定的帮助。C:char st[100];1. 字符串长度 strlen(st);2. 字符串比较 strcmp(st1,st2); strncmp(st1,st2,n); 把st1,st2的前n个进行比较。3. 附加 strcat(st1,st2); strncat(st1,st2,n); n表示连接上st2的前n个给st1,在最后不要加'\0'。4. 替换 strcpy(st1,st2); strncpy(st1,st2,n); n表示复制st2的前n个给st1,在最后要加& 阅读全文
posted @ 2012-02-13 14:57
知识天地
阅读(2394)
评论(0)
推荐(0)
摘要:
google搜索到的头条:散列表(也叫哈希表),是根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 我觉得这个解释太含糊,想要整明白哈希表,那就得明白哈希表到底有什么样的优势。 数据结构中,有个时间算法复杂度O(n)的概念来衡量某种算法在时间效率上的优劣。哈希表的理想算法复杂度为O(1),也就是说利用哈希表查找某个值,系统所使用的时间在理想情况下为定值,这就是它的优势。那么哈希表是如何做到这一点的呢? 我们定义一个很大的有序数组,想要得到位于该数组第n个位置的值,它的算法复杂度为O 阅读全文
posted @ 2012-02-13 14:56
知识天地
阅读(2290)
评论(0)
推荐(0)
摘要:
一、什么是内存泄露?在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。通常我们所说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。二、内存泄露的分类: 1.. 阅读全文
posted @ 2012-02-13 14:54
知识天地
阅读(6276)
评论(0)
推荐(1)
摘要:
编译器到底做了什么实现的虚函数的晚绑定呢?我们来探个究竟。 编译器对每个包含虚函数的类创建一个表(称为V TA B L E)。在V TA B L E中,编译器放置特定类的虚函数地址。在每个带有虚函数的类 中,编译器秘密地置一指针,称为v p o i n t e r(缩写为V P T R),指向这个对象的V TA B L E。通过基类指针做虚函数调 用时(也就是做多态调用时),编译器静态地插入取得这个V P T R,并在V TA B L E表中查找函数地址的代码,这样就能调用正确的函数使晚捆绑发生。为每个类设置V TA B L E、初始化V P T R、为虚函数调用插入代码,所有这些都是自动发生 阅读全文
posted @ 2012-02-13 14:53
知识天地
阅读(398)
评论(0)
推荐(0)
浙公网安备 33010602011771号