我在某些设备上编码。 流程通常是这样的:
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()
内分配动态内存 - 然后什么时候释放它?
或者我应该这样离开它,并依赖于用户刚刚关闭设备后,该存储器将被“释放” - 并且它不会损坏任何东西,因为无论如何设备都被关闭了。
答案 0 :(得分:1)
请注意,在执行程序期间不要泄漏内存,尤其是,这听起来像是一个非常有限的嵌入式设备,可能没有太多内存。可以说,它可以让好的程序代码释放你分配的所有内容,这样就不用担心了。
但是,实际上,如果当时电源关闭,您是否在程序终止时遗留了内存是否重要?不,它没有。