Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

一定要用 new 來配置物件嗎?

0 views
Skip to first unread message

sw

unread,
Jan 21, 1997, 3:00:00 AM1/21/97
to

==> 在 chenj...@vlsi1.iie.ncku.edu.tw (cjh) 的文章中提到:
> 在inside Visual C++(松岡侯俊傑譯)中,我經常看到作者使用 new 來配置物件,例如:
> CMyView::OnDraw(CDC *pDC)
> {
> CBitmap *pBitmap = new CBitmap;
> pBitmap->LoadBitmap(IDB_TEST);
> delete pBitmap;
> }
> 這樣寫一定要記得delete. 但是如果寫成
> CMyView::OnDraw(CDC *pDC)
> {
> CBitmap Bitmap;
> Bitmap.LoadBitmap(IDB_TEST);
> }
> 這樣是否也可以呢?作者為何用前者?差異在哪裡? Thanks.

我想使用前一種方式較為安全,這樣可以避免 stack 的空間不足的問題.
假設你使用後者,而你不是宣告一個 CBitmap 物件而是其他的物件,而這個
物件須要用蠻多的記憶體空間的話,有可能你的 stack 會無法負荷.
若是使用前者的話,則會使用 heaper(堆積) 的空間.通常堆積的空間遠較
stack 的大,所以較不會有配置不到記憶體的可能.
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

0 new messages