[問題] auto_ptr的使用時機

看板C_and_CPP (C/C++)作者 (幸福!)時間16年前 (2010/07/02 10:44), 編輯推噓3(309)
留言12則, 3人參與, 最新討論串1/1
請問一下,如果方法1使用auto_ptr會比較好嗎? 方法1: POINT* _arrPoints = new POINT[iCountPoints]; _arrPoints[j] = xxxx; ::Polygon( obj.m_hMemDC, _arrPoints, iCountPoints); delete [] _arrPoints; auto_ptr版本: std::auto_ptr<POINT> arrPoints(new POINT [iCountPoints]); arrPoints.get()[j] = xxxx; ::Polygon( obj.m_hMemDC, arrPoints.get(), iCountPoints); 如果iCountPoints是個不定數,有時會 > 3000,有時又會 < 5。 --

07/28 14:36,
why~
07/28 14:36

07/28 14:36,
so~
07/28 14:36

07/28 14:37,
se~
07/28 14:37

07/28 14:39,
ri~
07/28 14:39

07/28 14:41,
阿~嘶~
07/28 14:41
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.227.34

07/02 11:06, , 1F
auto_ptr沒有支援new [], 其結果未定義, 所以不能這樣用
07/02 11:06, 1F

07/02 11:08, , 2F
應該用vector
07/02 11:08, 2F

07/02 11:20, , 3F
auto_ptr是OK的,一樣可以畫出polygon
07/02 11:20, 3F

07/02 11:24, , 4F
解構的時候會有問題耶 0.0
07/02 11:24, 4F

07/02 11:27, , 5F
是喔.囧,因為auto_ptr是前人寫的,會有啥問題?
07/02 11:27, 5F

07/02 11:29, , 6F
解構的時候它是用 delete , 不是 delete []
07/02 11:29, 6F

07/02 11:31, , 7F
可以參考一下 boost 的 shared_array
07/02 11:31, 7F

07/02 11:34, , 8F
囧..要用到boost啊.那還是用方法1就好了?
07/02 11:34, 8F

07/02 11:51, , 9F
看來用方法1會比較好, 不然可以自己寫一個smart ptr
07/02 11:51, 9F

07/02 12:05, , 10F
其實我想問的是...方法1的效率會不會好些.XD
07/02 12:05, 10F

07/02 12:10, , 11F
效率理論上較好但量測不出差距,因為比較起來Polygon耗時太多
07/02 12:10, 11F

07/02 12:22, , 12F
也是...畫Ploygon沒更快的方法了吧?
07/02 12:22, 12F
文章代碼(AID): #1CBLA785 (C_and_CPP)
文章代碼(AID): #1CBLA785 (C_and_CPP)