為什么使用指針能讓程序的內存開銷小且運行速度快?
3 回答

呼如林
TA貢獻1798條經驗 獲得超3個贊
依我看,主要體現在兩點:
1 仿制過分復制
函數調用中傳值,會占用大量堆??臻g,同時過多的拷貝函數調用會降低性能。
例如有個類
class A
{
int buffer[1000000];
.....
A(const A&)....
A& operator=(const A&)....
};
void function(A a)
{
A b;
b = a;
.......
}
上面的例子中,不但會占用大量堆??臻g,而且等號與拷貝函數都影響性能。
2 動態生成內存
很多對象可能一輩子都不用構造,用指針可以做到這點。
如:
class Render
{
void InitRender()
{
int iRender = CheckDevice(); //檢查最佳配置
switch(iRender)
{
case d3d9:
CreateD3D9Render(&pd9);
break;
}
}
IOpenGLRender* por;
ID3D9Render* pd9;
ID3D11Render* pd11;
IGDIRender* pgr;
};
顯然,你只需要一個Render,如果不用指針,一個Render可能耗掉你上百MB內存

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
添加回答
舉報
0/150
提交
取消