c语言 directx,DirectX3D 学习_weixin_39795325的博客-程序员宅基地

技术标签: c语言 directx  

3a3d84d4a1124f8f2b3ef985de757fc9.gif

注意:

内核对象句柄,是用来标识某个内核对象的一个id

同一个对象的该id对于每个进程是不同的,具体如何实现是ms不公开的算法,以下是一个近似的,可能的算法:

进程创建时,windows系统为进程构造了一个句柄表

当该进程希望获得一个内核对象句柄或者创建一个内核对象从而获得该对象句柄时

系统会将在句柄表中增加一个表项,表项的内容中存储了指向目标内核对象的指针

同时,系统返回这个表项在句柄表中的索引作为句柄

这样,进程就通过句柄查询句柄表得到对象指针,从而可以访问该对象。

同时又由于有了句柄表的保护,可以防止对内核对象的非法操作。

我想现在大家已经能对句柄概念有所了解了,我希望我的文章能对大家有所帮助。其实如果你学过SDK编程,那对句柄的概念理解会更好,更深。如果你是直接学VC6的MFC编程的,建议你看一下SDK编程,这会对你大有好处。

cbef093dcc044b2793832001e2365e43.pngstructtest

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngintnumber;

df37983f39daa189b8c814e01a6a9011.pngdoublescore;

df37983f39daa189b8c814e01a6a9011.png   test*next;

0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.pngvoidreverse(test*&head)

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png   test*pe=head;

df37983f39daa189b8c814e01a6a9011.png   test*ps=head->next;

df37983f39daa189b8c814e01a6a9011.pngwhile(ps!=NULL)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png      pe->next=ps->next;//save the next pointdf37983f39daa189b8c814e01a6a9011.pngps->next=head;//reversedf37983f39daa189b8c814e01a6a9011.pnghead=ps;

df37983f39daa189b8c814e01a6a9011.png      ps=pe->next;

4a5daaec04350a363f186a4d2c5ed6ce.png    }0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

1.堆区( heap ):由程序员申请分配和释放,属动态内存分配方式,若程序员不释放,程序结束时可能会由 OS 回收。不过这个内存分配很容易引起问题,如果申请的内存不释放就会造成内存泄漏;如果释放的不是所要释放的内存,则轻者引起程序运行结果出错,重者系统崩溃。

2.栈区( stack ):编译器自动分配释放,存放函数的形参值、局部变量的值,也是属于动态内存分配方式,它由系统分配,所以执行效率也高,不过自由度小,声明时就得决定其具体大小。

3.全局区(静态区)( static ):全局变量和静态变量的存储是放在一块的,而且初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放,所以也不会造成内存问题。

4.文字常量区和程序代码区,两者都是由系统分配和释放,且文字常量区和前面三区合成为程序数据区,与程序代码区相对应。

cbef093dcc044b2793832001e2365e43.pnginta[100];

cbef093dcc044b2793832001e2365e43.pngfor(i=0, c=0;i<100;i++)

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(c==0)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png        t=a[i];

df37983f39daa189b8c814e01a6a9011.png        c=1;

df37983f39daa189b8c814e01a6a9011.pngcontinue;

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.png    (a[i]==t)?c++:c--;

0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.pngreturnt;

转载

cbef093dcc044b2793832001e2365e43.pngvoidpalie1(charsrc[],charbuffer[],boolused[],intlen,intlevel)

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(level==len)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png        cout<

df37983f39daa189b8c814e01a6a9011.pngreturn;

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.pngfor(inti=0;i

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(used[i])

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngcontinue;

4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png        buffer[i]=src[i];

df37983f39daa189b8c814e01a6a9011.png        used[i]=true;

df37983f39daa189b8c814e01a6a9011.png        palie1(src,buffer,used,len,level+1);

df37983f39daa189b8c814e01a6a9011.png        used[i]=false;

df37983f39daa189b8c814e01a6a9011.png

4a5daaec04350a363f186a4d2c5ed6ce.png    }0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.pngvoidpailie(charstr[])

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngintlen=strlen(str);

df37983f39daa189b8c814e01a6a9011.pngboolused[10];

df37983f39daa189b8c814e01a6a9011.pngfor(inti=0;i<10;i++)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png        used[i]=false;

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.pngcharout[10];

df37983f39daa189b8c814e01a6a9011.png    palie1(str,out,used,len,0);

df37983f39daa189b8c814e01a6a9011.png    

0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.pngboolrevers(charstr[])

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngchar*buffer;

df37983f39daa189b8c814e01a6a9011.pnginttokenreadpos,wordreadpos,wordend,writepos=0;

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png tokenreadpos=strlen(str)-1;

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png buffer=(char*)malloc(tokenreadpos+2);

df37983f39daa189b8c814e01a6a9011.pngif(!buffer)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngreturnfalse;

4a5daaec04350a363f186a4d2c5ed6ce.png }df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.pngwhile(tokenreadpos>=0)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(str[tokenreadpos]=='')

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png   buffer[writepos++]=str[tokenreadpos--];

4a5daaec04350a363f186a4d2c5ed6ce.png  }df37983f39daa189b8c814e01a6a9011.pngelsef70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png   wordend=tokenreadpos;

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.pngwhile(tokenreadpos>=0&&str[tokenreadpos]!='')

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png    tokenreadpos--;

4a5daaec04350a363f186a4d2c5ed6ce.png   }df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png   wordreadpos=tokenreadpos+1;

df37983f39daa189b8c814e01a6a9011.pngwhile(wordreadpos<=wordend)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png    buffer[writepos++]=str[wordreadpos++];

4a5daaec04350a363f186a4d2c5ed6ce.png   }4a5daaec04350a363f186a4d2c5ed6ce.png  }4a5daaec04350a363f186a4d2c5ed6ce.png }df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png buffer[writepos]='\0';

df37983f39daa189b8c814e01a6a9011.png strcpy(str,buffer);

df37983f39daa189b8c814e01a6a9011.png free(buffer);

df37983f39daa189b8c814e01a6a9011.pngreturntrue;

0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.png 

cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.png//以上的程序需要分配内存。。cbef093dcc044b2793832001e2365e43.pngcbef093dcc044b2793832001e2365e43.png 

cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.png 

cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png/***************************************************************************************

cbef093dcc044b2793832001e2365e43.pngcbef093dcc044b2793832001e2365e43.pngvoidfun(charstr[],ints,inte)

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngchartemp;

df37983f39daa189b8c814e01a6a9011.pngwhile(e>s)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png  temp=str[s];

df37983f39daa189b8c814e01a6a9011.png  str[s]=str[e];

df37983f39daa189b8c814e01a6a9011.png  str[e]=temp;

df37983f39daa189b8c814e01a6a9011.png  s++;

df37983f39daa189b8c814e01a6a9011.png  e--;

4a5daaec04350a363f186a4d2c5ed6ce.png }0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.pngvoidrevers2(charstr[])

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngintstart=0,end=0,len;

df37983f39daa189b8c814e01a6a9011.png len=strlen(str);

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png fun(str,start,len-1);

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png//testdf37983f39daa189b8c814e01a6a9011.pngcout<

df37983f39daa189b8c814e01a6a9011.pngdf37983f39daa189b8c814e01a6a9011.pngwhile(end

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(str[end]!='')

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png   start=end;

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.pngwhile(end

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.png918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png    end++;

4a5daaec04350a363f186a4d2c5ed6ce.png   }df37983f39daa189b8c814e01a6a9011.png   end--;

df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png   fun(str,start,end);

df37983f39daa189b8c814e01a6a9011.png   

4a5daaec04350a363f186a4d2c5ed6ce.png  }df37983f39daa189b8c814e01a6a9011.png

df37983f39daa189b8c814e01a6a9011.png  end++;

4a5daaec04350a363f186a4d2c5ed6ce.png }df37983f39daa189b8c814e01a6a9011.png cout<

df37983f39daa189b8c814e01a6a9011.png0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.png 

cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.png//以上不需要分配多余的内存

cbef093dcc044b2793832001e2365e43.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39795325/article/details/117107155

智能推荐

等值线追踪算法_等值线算法_0小龙虾0的博客-程序员宅基地

等值线追踪算法前篇提到了一种直接绘制等值线的方法,但是那种方法没办法确定每一条线上的点。如果我们想给等值线限定一些条件,如太短不绘制,标定等值线值等,上一种方法则无法使用。因此我又写了一个等值线的追踪算法。等值线追踪算法等值线追踪算法,顾名思义,就是把每条线上的点,按顺序追踪出来,这样直接按照顺序绘制便能绘制出完整的线段。如图5号网格,要确定哪个线段是接下来要连接的线段,...

cocos2d-x 3.x 物理碰撞机制_weixin_30666753的博客-程序员宅基地

近期又弄了物理引擎。写一下吧,以下有在其它博客学习到的知识。加上自己的理解,总结下。cocos2d-x 3.X中全新的封装的物理引擎给了开发人员最大的便捷,你不用再繁琐与各种物理引擎的细节,全然的封装让开发人员能够更快更好的将物理引擎的机制加入到自己的游戏中,简化的设计是从2.0到3.X的一个质的飞跃。cocos2d-x 3.0+中的物理属性:1、物理世界...

Keras搭建CNN进行人脸识别系列(一)_独孤金泽的博客-程序员宅基地

一.项目意义       人脸识别是当前深度学习与机器学习的热门研究方向,本项目适用于机器学习刚入门的本科生与硕士研究生,好了废话少说,下面切入正题!本项目就是要一步一步地带你搭建CNN,实现一个用keras实现的人脸识别程序二.需要的环境        IDE:Pycharm        OS:Linux 和windows都可以        Python:python3和...

3年工作经验的程序员猎头开出月薪五万,听到工作地点你还敢去吗_Lemon-的博客-程序员宅基地

3年工作经验的程序员猎头开出月薪五万,听到工作地点你还敢去吗每个人都渴望高薪,但是在选择的时候可要擦亮眼睛哦现如今社会是很复杂的,很多时候自己被套路了却根本发现不了,等你发现的时候已经产生了不好的结果。而说到找工作,相信很多人也同样被坑过,记得在过去被坑得最多是应该是那些中介公司,经常是中介费交了,结果工作没找到,不仅浪费钱而且耽误时间。最近在职场论坛上看到这样一个帖子:3年老员...

高并发之——多线程并发与线程安全总结_冰 河的博客-程序员宅基地

可以参考如下博文:《Java之——内存模型》《高并发之——如何安全的发布对象(含各种单例代码分析)》《高并发之——线程安全性》《高并发之——线程安全策略》《高并发之——AQS》《高并发之——J.U.C组件扩展》《高并发之——线程池》《高并发之——死锁,死锁的四个必要条件以及处理策略》《高并发之——多线程并发扩展》...

随便推点

当某个页面有多个EditText时,如何确定当前获取焦点的是哪一个EditText_黄石林的博客-程序员宅基地

1、将多个EditText注册焦点改变监听2、获取当前获得焦点的EditTextprivate EditText mEdtInput,mCurrentEdtView;mEdtInput = (EditText) findViewById(R.id.edt_input);mEdtInput.setOnFocusChangeListener(mFocusChangedListene

Tensorflow中注意力机制的实现:AttentionCellWrapper_tensorflow点云注意力机制代码_酒酿小圆子~的博客-程序员宅基地

文章目录注意力机制最早被用于机器翻译领域,其本质类似于人类在认知事物时的注意力,后因其有效性被广泛用于计算机视觉、语音识别、序列预测等领域。常见的注意力机制通常是基于Encoder-Decoder的。在Tensorflow中也有现成的注意力API可以使用,即AttentionCellWrapper。值得注意的是,Tensoflow中AttentionCellWrapper的实现并不是基于E...

leecode刷题(19)-- 最长公共前缀_Mr.Gu的博客-程序员宅基地

leecode刷题(19)-- 最长公共前缀最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。...

Qt编写地图综合应用52-加载离线地图_opengl加载地图_feiyangqingyun的博客-程序员宅基地

一、前言离线地图的加载其实和在线地图的加载方法几乎一样,唯一的最大区别就是,之前可能一个js文件引入即可,现在需要多个本地的js文件引入,而且网上流传的js文件的版本比较旧,意味着现在新版的支持opengl形式的地图无法支持,后期再去网上搜索找找看能不能搞到最新的版本。离线地图加载依赖一堆的js文件,整个文件夹可以自定义放置的位置,在网页代码引入的时候指定位置就行,一般建议就放在可执行文件下新建一个目录专门存放,这样管理方便,离线地图对应的图片文件目录也是可配置的,也建议放在这个目录下。二、功能特点

(转)DB2 and IBM's Processor Value Unit pricing_mlxia的博客-程序员宅基地

http://www.ibm.com/developerworks/data/library/techarticle/dm-0611zikopoulos2/?S_TACT=105AGX52&amp;amp;S_CMP=DWCHINADB2 and IBM's Processor Value Unit pricing Paul Zikopoulos ([email protected]...

GitHub + Hexo 搭建个人博客 ———搭建_长脸先生的博客-程序员宅基地

配置环境mac OSGitHexo 3.0+Note.jsnpmGitHub账号这里所有的操作流程都是在mac上做的,但是Windows也可以参考。你需要知道的在配置之前我想先把全部流程简要叙述一下,以免在某个环节懵逼, 同时你几乎可以按照如下的简要说明完成前期的准备工作: 1. 创建GitHub账号,并创建一个项目,项目的名称格式必须是:你的用户名.github.io,这将会是你

推荐文章

热门文章

相关标签