gpt4 book ai didi

c++ - 游戏循环中的可变内存方法范围

转载 作者:行者123 更新时间:2023-11-28 03:11:52 24 4
gpt4 key购买 nike

我有一个每秒执行大约 30 次的游戏更新循环。我想知道变量内存一旦离开方法范围会发生什么,例如。

void updateLoop(double delta)
{
double TestVar = 1; // << Does this variable get "deleted from memory"
// once it this method completes? What exactly happens?
}

最佳答案

是的,每次函数执行结束时它都会被销毁(在您的情况下,它每秒创建/销毁 30 次)。

如果你想让它在执行后保留值,可以改用该函数所属类的成员变量,或者使用静态变量或全局变量。

void updateLoop(double delta)
{
static double TestVar = 1;
}

但是,如果您尝试在该函数内动态分配内存,请确保始终对您分配内存的指针执行delete 操作,否则会发生内存泄漏。因为一旦程序超出范围,您分配的指针就会被销毁,但是在该指针指向的位置分配的内存不会被销毁。因此,您将丢失对它的引用,从而导致内存泄漏。

void updateLoop(double delta)
{
int* TestVar = new int;
// your codes
delete TestVar;
}

关于c++ - 游戏循环中的可变内存方法范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18225064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com