声明在循环中调用的方法中的整数是一个好习惯吗?

时间:2017-06-20 03:05:51

标签: c++ c++11

在我的代码中,我有一个方法,我需要声明一个方法来计算,我可以在方法中声明变量吗?

bool CheckArrays(int arrArg1[5][9], vector <int> arrArg2)
{
    int idk;
    return true;
}

int main()
{
    while(true)
    {
        CheckArrays(X, X2);
    }
}

你可以看到他每次在函数CheckArrays(X,X2)中调用函数CheckArrays时都会声明int idk,这样做是最好的做法吗?

它是否会通过每次声明来浪费记忆?(以更大的方法为例)。

4 个答案:

答案 0 :(得分:2)

  

我可以在方法中声明变量吗?

是。不仅如此,它还是最好的方法。

  

我害怕的是每次它都会声明变量,我害怕浪费内存或删除数据idk

我愿意打赌,这不会成为性能瓶颈。计算机可以处理更多的复杂性。

  

每次都宣布它并浪费记忆。

每次进行函数调用时都会初始化变量,但不会浪费内存。这是最好的方法。

答案 1 :(得分:1)

不仅好,而且推荐。变量应在尽可能小的封闭范围内声明。当输入方法时,这个将在堆栈上分配,并在方法退出时解除分配,基本上没有成本。

答案 2 :(得分:0)

它不浪费任何内存,这个变量在堆栈中并在函数结束时停止存在。但是,每次调用该函数时都会重置它。

如果您希望值保持持久,请将其设为public class Category { private String category_id; private String category_name; private String category_description; public Category() { } public Category(String category_id, String category_name, category_description) { this.category_id = category_id; this.category_name = category_name; this.category_description = category_description; } public String getcategory_id() { return category_id; } public String getcategory_name() { return category_name; } public String getcategory_description() { return category_description; } 。该变量将不再在堆栈中,但只会被分配一次。

答案 3 :(得分:0)

简单地声明一个整数(并且永远不会将它用于任何东西)是完全免费的,因为如果你启用了优化(如果你关心性能,你将会这样),编译器将简单地从生成的二进制文件中删除它。

假设你的实际代码确实使用了整数,它仍然几乎是免费的;当函数执行时,它将占用四到八个额外字节的堆栈空间(取决于你的CPU架构),但这是一个不值得担心的微不足道的RAM。它不会占用任何额外的CPU周期,除非你得到或设置它的值,即使这样获得或设置一个整数的值足够接近你自己也不必担心它。