推 johnjohnlin: unique_ptr<int[]> 可以用在 new int[100] 05/20 22:34
→ johnjohnlin: C++11 以前似乎不行 05/20 22:34
→ wtchen: 我印象中unique_ptr是C++11開始才有的,之前只有auto_ptr 05/20 22:37
→ wtchen: auto_ptr在C++11似乎拿掉了? 05/20 22:37
推 johnjohnlin: auto_ptr 變成 deprecate 了 05/20 22:47
→ johnjohnlin: auto_ptr 當 parameter,函數結束的時候就 free 掉了 05/20 22:48
推 kwpn: 用unique_ptr<int[]>還不如用vector<int> 05/20 23:01
→ wtchen: 我其實不是很懂unique_ptr的使用時機... 05/20 23:16
→ LiloHuang: unique_ptr, shared_ptr, weak_ptr 都有其使用時機 05/20 23:37
→ LiloHuang: 如果今天只是要配置一個陣列,而沒有要將其元素初始化 05/20 23:42
→ LiloHuang: 使用 unique_ptr 搭配 custom deleter,就可以使用 05/20 23:44
→ LiloHuang: malloc 跟 free 來配置一塊記憶體給 unique_ptr 05/20 23:45
→ LiloHuang: 在數量級很大時,配置的記憶體能被自動回收又兼顧速度 05/20 23:54
→ LiloHuang: 更常被用的是,像 file descriptor 或 socket FD 之類 05/21 00:01
→ LiloHuang: 在 custom deleter 帶自己想要的回收函式做一些事情 05/21 00:02
推 LiloHuang: 第一個例子不好,因為 built-in type 也可省略初始化 05/21 00:22
→ LiloHuang: 不一定要用 malloc 跟 free 還有 customer deleter 05/21 00:22
→ LiloHuang: 像是 std::vector<int> 就無法省下初始化的動作了 05/21 00:23
→ LiloHuang: 假設我想要當成一塊 buffer 去給別人來填資料 XD 05/21 00:28
→ LiloHuang: 而 3rd-party library 又只吃 int * 的場合之類的 05/21 00:30
→ Clangpp: 動態陣列我建議用STL的容器 像vector之類的來做就好了 05/21 10:36
→ Clangpp: effective STL有教你可以用vector 去填C風格的function 05/21 10:37
→ Clangpp: 只是你要知道裡面會不會 重新allocate記憶體 05/21 10:38
→ Clangpp: 如果不會你就可以用 像是&v[0] 的方式 去填原來 pointer 05/21 10:39
→ Clangpp: 的參數 05/21 10:39