[問題] 如何有效管理記憶體
大家好, 小弟我有個記憶體管理的問題想請教大家
1. 現在的程式架構main.cpp
int main(input)
{
//無任何記憶體配置
for(i=0;i<itercount;i++)
{
func1(input,something);
func2(something);
func3(something,output);
}
}
func1~func3是很大的程式, 由不同人撰寫, 各自在開始時配置記憶體, 最後釋放記憶體
這樣有個問題就是浪費諸多時間在配置和釋放記憶體上, func1~func3有可能需要iterate
數次因此更增加這個架構的缺陷
2. 我因此想到一個稍微改良的架構
int main(input)
{
//無任何記憶體配置
func1_Initialize();
func2_Initialize();
func3_Initialize();
for(i=0;i<itercount;i++)
{
func1(input,something);
func2(something);
func3(something,output);
}
func1_Free();
func2_Free();
func3_Free();
}
這樣做的好處是記憶體只需要配置和釋放一次, 但是缺點是一次需要配置大量記憶體,
造成如果input image太大的話(記憶體大小都是根據image長寬), 記憶體會不夠,
其實就是func1~func3還是各自配至各自的記憶體, 可是事實上func1跑完裡面的記憶體
到下一次跑到func1之前都不會用到了, 造成浪費
3. 理想上但是不知道怎麼實做的架構
int main(input)
{
//配置一大團記憶體, 大小都跟input image長寬相等
malloc mem1, mem2....mem100;
for(i=0;i<itercount;i++)
{
func1(input,something,mem1~mem50);
func2(something,mem1~mem98);
func3(something,mem1~mem37,output);
}
free mem1~mem100;
}
由Main統一配置和釋放記憶體, 然後看各個function需要多少予以配給, 請問實做上該
如何寫比較對呢? 總不會一個function要有快100個左右的input吧...?
小弟先謝謝大家了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.54.5.185
推
08/27 06:00, , 1F
08/27 06:00, 1F
→
08/27 06:00, , 2F
08/27 06:00, 2F
推
08/27 06:05, , 3F
08/27 06:05, 3F
→
08/27 06:06, , 4F
08/27 06:06, 4F
→
08/27 06:07, , 5F
08/27 06:07, 5F
→
08/27 06:47, , 6F
08/27 06:47, 6F
→
08/27 11:42, , 7F
08/27 11:42, 7F
→
08/27 11:42, , 8F
08/27 11:42, 8F
→
08/27 11:47, , 9F
08/27 11:47, 9F
→
08/27 12:00, , 10F
08/27 12:00, 10F
推
08/27 13:15, , 11F
08/27 13:15, 11F
推
08/27 13:46, , 12F
08/27 13:46, 12F
→
08/27 15:02, , 13F
08/27 15:02, 13F
→
08/27 21:37, , 14F
08/27 21:37, 14F
→
08/27 22:18, , 15F
08/27 22:18, 15F
→
08/27 22:25, , 16F
08/27 22:25, 16F
→
08/27 22:26, , 17F
08/27 22:26, 17F
→
08/27 22:26, , 18F
08/27 22:26, 18F
→
08/27 22:27, , 19F
08/27 22:27, 19F
推
08/27 22:28, , 20F
08/27 22:28, 20F
→
08/27 22:32, , 21F
08/27 22:32, 21F