面向对象编程安全作业
6页1、面向对象编程安全作业作业1:写一段静态成员不安全的代码并对提出解决方案。具体代码见P1_UnsafeStatic工程,下面对核心代码进行分析:class CRabbitpublic:CRabbit();CRabbit();static int our_n_carrot;void eat()Sleep(500);/吃萝卜需要时间our_n_carrot-;void collect()Sleep(600);/收集萝卜需要时间our_n_carrot+;void count_carrot()cout 当前萝卜数: our_n_carrot 0)rabbit.eat();elserabbit.collect();rabbit.count_carrot();return true;这里定义的规则是:当一个兔子发现兔群的萝卜数大于0时,它就会吃掉一个萝卜;否则,它会去收集一个萝卜。最后,它会报出当前兔群的萝卜数,如此反复。最后在主函数中开三个“兔子”线程,观察运行结果如下图所示:图1-1 程序运行结果示意图这里可以看出,某些兔子已经把萝卜吃成负的了所以直接对类静态变量进行修改是存在问题的这里的解决
2、方案就是每次只允许一个兔子操作萝卜,用一个全局的静态变量进行保护。核心代码如下:if (!CRabbit:m_b_busy)CRabbit:m_b_busy = true;if (CRabbit:our_n_carrot 0)rabbit.eat();elserabbit.collect();rabbit.count_carrot();CRabbit:m_b_busy = false;图1-2 程序运行结果示意图(2)这里可以看到,如果加了标识变量进行保护时,萝卜的数量始终为0或者1,这样就不会出现问题。作业2:(1)在C和Java中怎样回收内存?(2)单例模式为什么能提高程序性能?有何劣势?C语言是使用delete或者free释放内存,delete用于释放new动态申请的空间,free用于释放malloc动态申请的空间。而到了其生命周期的变量,其内存会被自动回收。而java是调用finalise()是申请回收内存,至于何时被回收并不能被确定。单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界
《面向对象编程安全作业》由会员公****分享,可在线阅读,更多相关《面向对象编程安全作业》请在金锄头文库上搜索。
10kv电动机大修作业指导书
工程维修费用报价表
2023年水库日常维修养护制度6项制度_水库维修养护制度
《湖心亭看雪》典型例析
机械加工技术基础首页和教案
中考数学预测试题二.
北京市房屋租赁协议格式范本(九篇)
安防高清监控镜头技术知多少
小学音乐兴趣小组活动计划范文(五篇).doc
现代蚊帐的开发与管理
观《冲出亚马逊》有感
宿舍、教学楼消防火灾应急疏散预案
玻璃幕墙安装工艺
2022冶金工业技能鉴定考试(难点和易错点剖析)名师点拨卷附答案87
【创新设计】高考数学一轮复习 第二章 函数及其表示训练 理 新人教A版
EPS钢丝网架聚苯板机械固定外墙外保温厚抹灰施工方案
实习心得体会
物业客服主管工作总结和计划2022年物业主管工作计划汇编10篇
漯河骨科康复医疗器械项目申请报告【模板范文】
安全生产月的经典演讲稿范文
2023-01-20 13页
2024-02-14 40页
2023-08-03 11页
2024-01-20 2页
2023-02-01 6页
2024-02-10 6页
2023-03-14 6页
2022-10-10 34页
2022-08-03 77页
2023-08-09 10页