加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

什么时候删除对象?创建对象的影响c

发布时间:2020-12-16 10:09:55 所属栏目:百科 来源:网络整理
导读:我正在帮助为任天堂DS编程一个游戏(它有大约3MB的RAM).对于界面中的所有菜单,过去通过调用void函数创建“按钮”,该函数将背景图块设置为按钮.整个界面至少有30个按钮.现在我创建了一个按钮类,它存储了它的位置,标签以及其他数据值.现在我的问题是: 在程序离
我正在帮助为任天堂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有信号吗?).因此,通常在对象上使用“堆栈”是一个坏主意.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读