何时释放资源 - 奇怪的情况

时间:2013-12-10 12:43:22

标签: c

我在某些设备上编码。 流程通常是这样的:

int main(int argc, const char **argv)
{
   postMainMenu();
}

postMainMenu()定义为:

void postMainMenu(void)
{
    while(1)
    {
        // Present user with options
        s32 res = MessageBox("Menu", "1- Download\r2- Settings", 0, KEY_MASK_1|KEY_MASK_2);

        // Which key did the user press?
        if(res ==  KEY_1)
          showDownloadDialog();
        else if (res ==  KEY_2)
          showSettingsDialog();
    }
    return;
}

你可以注意到,一旦它进入postMainMenu,程序永远不会退出吗? 以正确的方式,因为在这个设备上运行单个应用程序,所以 用户只有在关闭设备后才能退出。这就是它现在的工作方式。

但我有这样的疑问,比如我在postMainMenu()内分配动态内存 - 然后什么时候释放它? 或者我应该这样离开它,并依赖于用户刚刚关闭设备后,该存储器将被“释放” - 并且它不会损坏任何东西,因为无论如何设备都被关闭了。

1 个答案:

答案 0 :(得分:1)

请注意,在执行程序期间不要泄漏内存,尤其是,这听起来像是一个非常有限的嵌入式设备,可能没有太多内存。可以说,它可以让好的程序代码释放你分配的所有内容,这样就不用担心了。

但是,实际上,如果当时电源关闭,您是否在程序终止时遗留了内存是否重要?不,它没有。