我正在帮助为任天堂DS编程一个游戏(它有大约3MB的RAM).对于界面中的所有菜单,过去通过调用void函数创建“按钮”,该函数将背景图块设置为按钮.整个界面至少有30个按钮.现在我创建了一个按钮类,它存储了它的位置,标签以及其他数据值.现在我的问题是:
在程序离开对象的范围后,所有这些新按钮对象是否会影响RAM使用(或其他性能方面)?
这是一些代码:
#include "Button.h" void titlescreen() //Called to create main menu { Button singlePlayer = Button(4,5,"Single Player"); //Creates button at coord (4,5) Button multiPlayer = Button(4,8,"Multi Player"); bool chosen = false; //Whether an option has been clicked while(!chosen) { //Menu stuff here } }
Button.h:
#include <stdio.h> #ifndef BUTTON_H #define BUTTON_H class Button { public: int length; int x,y; bool isColored; void setColored(bool); void setDefault(); button(int,int,const char * const); //Constructor button(int,const char * const,int); //Constructor }; #endif /* BUTTON_H */
解决方法
虽然您的术语不足,但您编写的代码会在“堆栈”中分配对象,因此只与您的范围一样长.
实际上,您可以更简洁地编写它:
//Button singlePlayer = Button(4,"Single Player"); // bad,uses the copy constructor Button singlePlayer(4,"Single Player"); // uses just a constructor call
无论如何,您应该注意的一件重要事情是,由于您使用“堆栈”来保存对象,无论您是“分配”还是“释放”它们,您的“RAM使用”都不会改变.大多数实现中的“堆栈”是一个预先分配的内存块,它永远不会扩展,只是在它填满时抛出堆栈溢出异常(或者你的框架等效,我认为C有信号吗?).因此,通常在对象上使用“堆栈”是一个坏主意.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。