首页 > 解决方案 > 就内存使用而言,在 c 上重用变量是否比定义新变量更好?

问题描述

嗨,我正在用 C 编程,内存使用在我的项目中非常重要。那么就内存使用而言,在 c 上重用变量是否比定义新变量更好?我的情况是这样的:我写了一个程序,它有很多层(它是 C 中的卷积神经网络),一旦上一层完成,我就进入下一层,一些变量没有使用。那么在下一层中再次使用它们可以帮助我节省内存还是我只是牺牲了太多(例如速度)而获得的内存很少?对于编译器,我使用https://github.com/riscv/riscv-gnu-toolchain

标签: criscv

解决方案


正如 UnholySheep 在他们的评论中所说,检查这一点的最简单方法是 A/B 测试。

不过,根据经验,动态分配非常慢,尤其是对于大变量,如果您正在执行以下操作:

void myfunc()
{
    for(int i=0; i<1000; i++)
    {   
        uint128_t* myBigArray = malloc(1000*sizeof(uint128_t));
        doSomething(myBigArray);
        free(myBigArray);
    }
}

考虑将数组声明移出循环,使其更像这样:

void myfunc()
{
    uint128_t* myBigArray = malloc(1000*sizeof(uint128_t));
    
    for(int i=0; i<1000; i++)
    {   
        doSomething(myBigArray);
    }
    
    free(myBigArray);
}

如果您不使用任何动态分配,请使用类似的东西:

void myfunc()
{
    uint128_t myBigArray[1000];
    
    for(int i=0; i<1000; i++)
    {   
        doSomething(myBigArray);
    }
}

据我所知应该没有什么区别


推荐阅读