怎么回事?在vs2005中和在vc6中运行时的错误不一样(指针问题)
2010-09-14 08:54
253 查看
最近我们班做课程设计,老师给我们一些题目,做银行管理系统、宾馆管理系统、考场管理系统、人事管理系统等等。我们一般是两、三个人一组。因为我比较高傲,所以别的同学都不愿意和我一个组。结果我就一个人一个组了……
不过一个人一组也未尝不是一件好事。我依靠自己的努力,连续奋战六天,终于把我那个人事管理系统做好了。由于源代码比较长,因此不便于贴上。在做的过程中,我遇到了很多问题。遇到了很多bug,但是自己通过查资料、上网,终于把它们解决了。课程设计没完,我还没有轻松。其余各组的同学们没有写出什么名堂,结果不是抄网上的源代码,就是复制老师的例子程序进行修改。达不到效果的话就找我。都说看懂别人的程序困难,我还真啃上了这根硬骨头。
由于是东拼西凑的,同学们的程序往往看起来支离破碎,可读性很差。同学们还有这样一个不好的习惯,代码长了还是写在一个cpp文件中。尽管老师指导了他们如何分文件写,但是似乎他们还不习惯。
我和一个编程序比较好的同学交谈时,得出这样一个经验:c++中的类相当于数据库中的基本表,c++中类的成员属性相当于数据库中的属性,如果编写多个类并且相关联的话,就相当于进行跨表查询,它的执行效率是最低的。因为涉及到了广义的笛卡尔积。所以在需求设计阶段,能进行归并的尽量归并,哪怕是归并后的类很庞大。
接下来我说说非常常见的错误:指针错误,这种错误往往编译、连接时通过,但是运行时出错。以下就是我编写控制台程序遇到错误的经验之谈。
…•●如果运行时出现“某某内存不能为read”,我认为问题在于用空指针指向了一块没有地址的区域(空区域),计算机无法找到这块区域,只能返回错误,就像你要别人找一件实际不存在的东西一样。
…•●如果运行时出现“某某内存不能为written”,我认为问题在于你的数组越界或与指针有关的非法操作。因为你非法进行了该操作,会立刻被聪明的windows操作系统发现并禁止。
…•●但有种情况,我也不清楚(谁来帮我?),就是也是出现内存不能为read的情况,但是很蹊跷,因为我在vc6上它是在main()函数右边大括号时出错,而用vs2005时错在了子函数的右边大括号,更蹊跷的是,我用vs2005调试它,竟然不报错!原因我不清楚,但一点是肯定的,程序并没有问题,要么是编译器编译不正确(我没有学编译原理,不好解释),要么是系统对指针要求过于严格,指针在析构的时候不满足系统的要求,从而报错。
以上就是我在这次课程设计的心得,有问题的欢迎和我讨论。下面送上一位有名的日本声优兼大学生--花泽香菜的照片!于是我轻轻地飘走了----上课铃已经响喽。
不过一个人一组也未尝不是一件好事。我依靠自己的努力,连续奋战六天,终于把我那个人事管理系统做好了。由于源代码比较长,因此不便于贴上。在做的过程中,我遇到了很多问题。遇到了很多bug,但是自己通过查资料、上网,终于把它们解决了。课程设计没完,我还没有轻松。其余各组的同学们没有写出什么名堂,结果不是抄网上的源代码,就是复制老师的例子程序进行修改。达不到效果的话就找我。都说看懂别人的程序困难,我还真啃上了这根硬骨头。
由于是东拼西凑的,同学们的程序往往看起来支离破碎,可读性很差。同学们还有这样一个不好的习惯,代码长了还是写在一个cpp文件中。尽管老师指导了他们如何分文件写,但是似乎他们还不习惯。
我和一个编程序比较好的同学交谈时,得出这样一个经验:c++中的类相当于数据库中的基本表,c++中类的成员属性相当于数据库中的属性,如果编写多个类并且相关联的话,就相当于进行跨表查询,它的执行效率是最低的。因为涉及到了广义的笛卡尔积。所以在需求设计阶段,能进行归并的尽量归并,哪怕是归并后的类很庞大。
接下来我说说非常常见的错误:指针错误,这种错误往往编译、连接时通过,但是运行时出错。以下就是我编写控制台程序遇到错误的经验之谈。
…•●如果运行时出现“某某内存不能为read”,我认为问题在于用空指针指向了一块没有地址的区域(空区域),计算机无法找到这块区域,只能返回错误,就像你要别人找一件实际不存在的东西一样。
…•●如果运行时出现“某某内存不能为written”,我认为问题在于你的数组越界或与指针有关的非法操作。因为你非法进行了该操作,会立刻被聪明的windows操作系统发现并禁止。
…•●但有种情况,我也不清楚(谁来帮我?),就是也是出现内存不能为read的情况,但是很蹊跷,因为我在vc6上它是在main()函数右边大括号时出错,而用vs2005时错在了子函数的右边大括号,更蹊跷的是,我用vs2005调试它,竟然不报错!原因我不清楚,但一点是肯定的,程序并没有问题,要么是编译器编译不正确(我没有学编译原理,不好解释),要么是系统对指针要求过于严格,指针在析构的时候不满足系统的要求,从而报错。
以上就是我在这次课程设计的心得,有问题的欢迎和我讨论。下面送上一位有名的日本声优兼大学生--花泽香菜的照片!于是我轻轻地飘走了----上课铃已经响喽。
![](http://student.csdn.net/attachment/201009/14/999749_1284427846n9h9.jpg)
相关文章推荐
- DB2出现错误导致定时代理不能运行是怎么回事?
- 运行ase的sybase central 时提示错误unable to load language dll 'scsslgzh',怎么解决这个问题,
- exc_bad_access的错误,找不到<libxml/tree.h> 头文件,retina模拟器怎么缩小的问题,xcode5.1.1怎么运行6.1的模拟器,还有模拟器模拟location
- 小错误变成大错误 不知道该怎么改了 应该是指针悬挂问题吧
- 指针方面的问题,此程序调试显示是正确的,但是运行起来的结果是错误的为什么?求解
- DirectShow 在VS2005/VS2010中环境配置和编译运行出现 winnt.h(5940)错误问题的解决
- (递归)运行有警告,结果错误,怎么回事?
- Could not connect to the view server 运行问题补充的脚本 提出上面的错误,怎么解决呢
- 刚发现了一个问题,关于vs2005 datagridview的,我发现在设计行标头的HeaderCell.Value的时候要是设置RowTemplate.Height 的值>= 17则行标头的那个黑三角就显示出来了,要是小于17就不能显示了,想问问大家,是怎么回事?
- 新手学Android【四】问题一<运行app时的空指针错误>
- 指针的动态分配怎么运行后老出现这个问题
- vs2008下debug调试无错误,release调试出错怎么回事
- VC6 和 VS2003 转换到VS2005 时可能会遇到的问题以及解决方法
- 关于Android中AdbWinApi.dll没有被指定在Windows上运行,或者它包含错误的问题解决
- 使用Eclipse3.2.1+STP.0.4.0+Apache Tuscany开发SCA的Java组件(4)安装运行错误问题修正篇
- VS2005 编译环境,解决 Runtime Error(运行时错误): R6034。
- 一个debug应用程序出现运行时诊测错误assert的问题
- 安卓的一个问题,貌似很简单,查了资料,但实在不知道怎么解决两处错误啊,求大神路过的解决一下
- IOS开发过程中Xcode编译错误以及运行时异常等问题记录
- 急!!ftp登录错误,提示 530 not logged in,连接失败 ,,是怎么回事啊