当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 毕业快一年,做了2个项目,都是在别人的代码上作开发,苦不堪言:bug 实在是太多。
 

 

 ·贝赛尔曲线的拆分算法    »显示摘要«
    摘要: 贝赛尔曲线的拆分是指将贝赛尔曲线分解成逼近的多边形。可以用来判断贝赛尔曲线的选中,以及显示贝赛尔曲线的旋转效果等。 贝赛尔曲线简单介绍: 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度。所以本函数的顶点数组的记录方式是:控制点+顶点+控制点+控制点+顶点+控制点+……。所以两个顶点之间的曲线是由两个顶点以及两个顶点之间的控制点来决定的。 ==主函数polybezierto......
    摘要: 大家好,我是skyman(sm3d),喜欢三维编程,现在正在系统学习opengl,directx,vr等.我经常到各大论坛上去转转.其中去得最多的地方是nehe的opengl网站(http://nehe.gamedev.net),那是我所见过的最好的学习opengl的网站,强烈推荐!!!这是我的第一篇关于opengl的文章,写得不是很好,欢迎大家指正. 大家知道,在opengl中输出文本......


VC中的一些调试技巧
毕业快一年,做了2个项目,都是在别人的代码上作开发,苦不堪言:bug 实在是太多.这一年中有大半的时间是在改别人的bug, 也积累了一些经验,与大家分享.我的方法大多数都来自«windows程序调试»(英文名 debugging windows programs).那本书里讲了很多方法,我只挑对我自己帮助最大的:

这种bug的表现就是不定时,不定地方的崩溃.这种bug我一共碰到2次,每一次都花了很长时间,尤其是第二次,花了大家三天时间.其原因是堆(heap)被破坏掉了. 【程序编程相关:C++学习笔记-后台服务程序开发模式(三

1.    调试内存破坏. 【推荐阅读:用VC++实现console程序显示彩色

// get the current state of the flag// and store it in a temporary variableint tmpflag = _crtsetdbgflag( _crtdbg_report_flag );// turn on (or) - keep freed memory blocks in the// heap’s linked list and mark them as freedtmpflag |= __crtdbg_check_always_df;// set the new state for the flag_crtsetdbgflag( tmpflag );int *nn =new int;delete nn;// turn off (and) - prevent _crtcheckmemory from// being called at every allocation request,it will cause much timetmpflag &= ~_crtdbg_check_always_df;// set the new state for the flag_crtsetdbgflag( tmpflag );如果之前堆已经坏掉了,那么程序(debug版)就会在分配内存的地方中断,在这儿是int *nn =new int; 第一次破坏堆的代码是这样:typedef struct aa{    int a;} aa;aa s[n];int i = 0;for(i=0;i<n;i++){    …   …    for(i=0;i<n;i++){…}    …    …    s[i].a = 0;}内外都使用i做循环变量,就这样把堆破坏了.第二次的代码比较隐蔽,我先是使用map文件找到了崩溃的地方,但是一看是一个window的api,就放过了,后来还是再用上面的方法,又定位到那个api:getfileattributesex(szfile, getfileexinfostandard, &attributes);  发现szfile这个参数有问题,是一个不合法的文件名,然后再调用这个api之前作文件名的合法检查,就没事了.呵呵,真是这个api干的,看来我们还是不能让microsoft什么都做.

2. 查找memory leak 【扩展信息:C++学习笔记-后台服务程序开发模式(二

我的方法是这样的:在可能出现问题的地方加上对堆的检查,用如下代码:


...   下一页
    摘要: 实现的主要部分代码: #include <setupapi.h>#include <devguid.h>#include <regstr.h>#pragma comment(lib,"setupapi.lib") clistbox m_strlist; ........ 枚举所有硬件设备的主要实现代码: m_strlist.resetconten......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE